Florian Report post Posted January 17, 2008 Render Bones ID is broken: http://www.superfloh.dyndns.org/el/elscreen022.png http://www.superfloh.dyndns.org/el/elscreen023.png Share this post Link to post Share on other sites
Schmurk Report post Posted January 17, 2008 Render Bones ID is broken: http://www.superfloh.dyndns.org/el/elscreen022.png http://www.superfloh.dyndns.org/el/elscreen023.png Just turn off the shadows and it will work. I don't really understand why it's doing that. All what I know is that the font system is using a system to record the texture used in order to avoid the changes of textures too frequently. And if you use glPushAttrib(GL_TEXTURE_BIT) and glPopAttrib() while using this system, it breaks the fonts display like we can see on your shots. I'll try to have a look to see if a glPushAttrib is done somewhere else and causes this problem but what I don't understand is that it's working well when you don't display the bones numbers... At the same time, I've noticed that the display of the actors tags is broken again and it's maybe linked to the error larrystorch has reported about cal_get_maxz. Share this post Link to post Share on other sites
asgnny Report post Posted January 17, 2008 (edited) Just did a cvs up and here is the error at the very end when it's trying to creating el.x86.linux.bin: actor_init.o(.text+0xff0): In function `cal_get_maxz': /usr/local/games/elc/actor_init.cpp:591: multiple definition of `cal_get_maxz' new_actors.o(.text+0x310):/usr/local/games/elc/new_actors.c:202: first defined here /usr/lib/gcc/i486-slackware-linux/3.4.6/../../../../i486-slackware-linux/bin/ld: Warning: size of symbol `cal_get_maxz' changed from 53 in new_actors.o to 69 in actor_init.o collect2: ld returned 1 exit status make: *** [el.x86.linux.bin] Error 1 I'm getting a very similar error (and cannot compile the cvs) under kubuntu 7.10. Edit: This problem seems to be caused by SKY_FPV_CURSOR being enabled in make.conf. The cvs compiles fine with SKY_FPV_CURSOR disabled. Edited January 17, 2008 by asgnny Share this post Link to post Share on other sites
larrystorch Report post Posted January 17, 2008 Edit: This problem seems to be caused by SKY_FPV_CURSOR being enabled in make.conf. The cvs compiles fine with SKY_FPV_CURSOR disabled. Damn! And that's been working great for a long time now. I was hoping it would soon be ready for release. Share this post Link to post Share on other sites
Entropy Report post Posted January 20, 2008 The ground tiles dissapear (black) when zooming in or rotating the camera. Happens on WinXP, Nvidia card. Share this post Link to post Share on other sites
Acelon Report post Posted January 20, 2008 (edited) The ground tiles dissapear (black) when zooming in or rotating the camera. Happens on WinXP, Nvidia card. I get this too sometimes.. WinXP and Nvidia card as well Edited January 20, 2008 by Acelon Share this post Link to post Share on other sites
Entropy Report post Posted January 20, 2008 Ok, it seems that it is because of a new, undocumented feature that Xaphier added recently to support backface culling for actors. Share this post Link to post Share on other sites
Florian Report post Posted January 21, 2008 ACTOR_FACE_CULLING breaks display of my shield: only the outer side is drawn, the backside isn't. Share this post Link to post Share on other sites
Entropy Report post Posted January 21, 2008 Yes, it requires new models which are not available for download yet. They will be once it passes the tests on Roja's computer. Share this post Link to post Share on other sites
Jetchko Report post Posted January 27, 2008 Dont know, maybe i'm missing something but with fresh CVS build wraith and phantoms are completely invisible for me, i see only heading. Compile is with default options. Share this post Link to post Share on other sites
ago Report post Posted January 27, 2008 (edited) Dont know, maybe i'm missing something but with fresh CVS build wraith and phantoms are completely invisible for me, i see only heading. This is a known issue with the actor shaders. Renaming the *.vert files in the shaders folder will disable the shaders and the Wraith should appear again. Edit: Using el -uap=0 main does not work because this is always interpreted as username ap=0. Using el --use_animation_program=0 main however disables the vertex shaders properly. I also tried disabling the shaders in el.ini but #use_animation_program=0 is not preserved when rewriting el.ini after #save. This is because OPT_BOOL_INI_RO causes a noop in elconfig.c:write_var(). IMHO it should be handled just as OPT_BOOL_INI is in that function. Edited January 27, 2008 by ago Share this post Link to post Share on other sites
Entropy Report post Posted January 28, 2008 This is a known problem. One way to fix it is copy the anim.vert over anim_ghost.vert BTW, pleas euse the vertex shaders if possible, since we need to find out all the problems related to them. Share this post Link to post Share on other sites
ago Report post Posted January 30, 2008 actors.c uses the inline keyword which breaks with Visual C++. There is an __inline__ define which takes care of different compilers. The functions in question are actors.c:573 static __inline__ void draw_actor_banner_new(actor * actor_id) actors.c:633 static __inline__ void draw_actor_without_banner(actor * actor_id) Share this post Link to post Share on other sites
kibora Report post Posted February 2, 2008 Why do you add std:: before the min() and max() functions. That doesn't compile on visual. min and max are part of math, not std Share this post Link to post Share on other sites
bluap Report post Posted February 2, 2008 Why do you add std:: before the min() and max() functions. That doesn't compile on visual. min and max are part of math, not std I don't mean to sound rude but even a cursory search on google e.t.c. will show you that your compiler is wrong. std::max() has been part of the C++ standard for years and years. There are several ways you can sort this out but it probably depends on your compiler version so have a look. Share this post Link to post Share on other sites
Learner Report post Posted February 2, 2008 Why do you add std:: before the min() and max() functions. That doesn't compile on visual. min and max are part of math, not std I don't mean to sound rude but even a cursory search on google e.t.c. will show you that your compiler is wrong. std::max() has been part of the C++ standard for years and years. There are several ways you can sort this out but it probably depends on your compiler version so have a look. VC++ has been known for not following standards for years, but revent versions have gotten much closer. Share this post Link to post Share on other sites
ago Report post Posted February 2, 2008 Why do you add std:: before the min() and max() functions. That doesn't compile on visual. min and max are part of math, not std This is a collision between then min/max define from windows.h and std::min/max. The preprecessor will expand std::min(a, to something like std::(a < b ? a : b) which is clearly wrong. I'm using an #undef min/max in the files in question to prevent the breakage. Maybe platform.h should have inside the #ifdef WINDOWS block #define NOMINMAX This prevents defining the macros. Index: platform.h =================================================================== RCS file: /cvsroot/elc/elc/platform.h,v retrieving revision 1.14 diff -u -r1.14 platform.h --- platform.h 1 Feb 2008 12:43:58 -0000 1.14 +++ platform.h 2 Feb 2008 15:11:53 -0000 @@ -24,6 +24,7 @@ #endif // _WIN32 || _WIN64 #ifdef WINDOWS + #define NOMINMAX #include <windows.h> #ifdef _MSC_VER // now we do test for VC // Lachesis: Make sure snprintf is declared before we #define it to be something else, Share this post Link to post Share on other sites
bluap Report post Posted February 2, 2008 Index: platform.h =================================================================== RCS file: /cvsroot/elc/elc/platform.h,v retrieving revision 1.14 diff -u -r1.14 platform.h --- platform.h 1 Feb 2008 12:43:58 -0000 1.14 +++ platform.h 2 Feb 2008 15:11:53 -0000 @@ -24,6 +24,7 @@ #endif // _WIN32 || _WIN64 #ifdef WINDOWS + #define NOMINMAX #include <windows.h> #ifdef _MSC_VER // now we do test for VC // Lachesis: Make sure snprintf is declared before we #define it to be something else, If that works for everyone then I'll happily add it but it's no substitute for a proper compiler. Share this post Link to post Share on other sites
kibora Report post Posted February 2, 2008 This seems to fix the problem. Still .... the the VC++ compiler is on of the best ones, whether it follows standards or not Other things that need fixing are: v[index].tmp = 2.0 / sqrt(v[index].remaining_tris.size()) v.score = 2.0 / sqrt(v.remaining_tris.size()); They should have a typecast otherwise are ambigious v[index].tmp = 2.0 / sqrt((float)v[index].remaining_tris.size()) v.score = 2.0 / sqrt((float)v.remaining_tris.size()); Share this post Link to post Share on other sites
Alia Report post Posted February 2, 2008 Other things that need fixing are: v[index].tmp = 2.0 / sqrt(v[index].remaining_tris.size()) v.score = 2.0 / sqrt(v.remaining_tris.size()); They should have a typecast otherwise are ambigious v[index].tmp = 2.0 / sqrt((float)v[index].remaining_tris.size()) v.score = 2.0 / sqrt((float)v.remaining_tris.size()); This is not ambiguous: sqrt accepts double, so compiler converts integer to double and passes it to sqrt function. What you suggest seems to be quite strange: you said convert it to float, but still it is not right type for sqrt (or you should use sqrtf instead) so compiler still must convert it to double. Share this post Link to post Share on other sites
bluap Report post Posted February 2, 2008 This seems to fix the problem..... OK, committed. Not sure I agree with the rest of what you said though. Share this post Link to post Share on other sites
kibora Report post Posted February 2, 2008 (edited) Other things that need fixing are: v[index].tmp = 2.0 / sqrt(v[index].remaining_tris.size()) v.score = 2.0 / sqrt(v.remaining_tris.size()); They should have a typecast otherwise are ambigious v[index].tmp = 2.0 / sqrt((float)v[index].remaining_tris.size()) v.score = 2.0 / sqrt((float)v.remaining_tris.size()); This is not ambiguous: sqrt accepts double, so compiler converts integer to double and passes it to sqrt function. What you suggest seems to be quite strange: you said convert it to float, but still it is not right type for sqrt (or you should use sqrtf instead) so compiler still must convert it to double. It is ambigious because i have 2 definitions of sqrt. One is with double as argument and the other is with float as argument. And considering v[index].tmp is float obviously it's better to use the float sqrt Edited February 2, 2008 by kibora Share this post Link to post Share on other sites
ago Report post Posted February 3, 2008 + #define NOMINMAX If that works for everyone then I'll happily add it but it's no substitute for a proper compiler. argl. guess what, gcc spills out warnings. In file included from eye_candy/types.h:8, from eye_candy/eye_candy.h:120, from eye_candy/effect_targetmagic.cpp:5: eye_candy/../platform.h:27:1: warning: "NOMINMAX" redefined In file included from d:/Dev-Cpp/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/mingw32/bits/c++config.h:35, from d:/Dev-Cpp/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/string:45, from eye_candy/eye_candy.h:111, from eye_candy/effect_targetmagic.cpp:5: d:/Dev-Cpp/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/mingw32/bits/os_defines.h:46:1: warning: this is the location of the previous definition This however works: Index: platform.h =================================================================== RCS file: /cvsroot/elc/elc/platform.h,v retrieving revision 1.15 diff -u -r1.15 platform.h --- platform.h 2 Feb 2008 17:24:31 -0000 1.15 +++ platform.h 3 Feb 2008 02:11:55 -0000 @@ -24,7 +24,9 @@ #endif // _WIN32 || _WIN64 #ifdef WINDOWS - #define NOMINMAX + #ifndef NOMINMAX + #define NOMINMAX + #endif #include <windows.h> #ifdef _MSC_VER // now we do test for VC // Lachesis: Make sure snprintf is declared before we #define it to be something else, Share this post Link to post Share on other sites
bluap Report post Posted February 3, 2008 argl. guess what, gcc spills out warnings. Yeah, I fixed it just like that a couple of hours ago. Share this post Link to post Share on other sites