Both original ET and ET:Legacy play horribly with new GFX cards if Extensions Limit is not enforced
It took me a year to track down this insiduous problem, which causes horrible gameplay. Need to much increase the buffer to read opengl extensions available from card. Currently set at 4096 bytes/characters. However, as the game detects an impending buffer overrun, it throws them all away, doing all the fancy rendering bits in software. Hence stutter, audio artifacts, warping opponents and keyboard/mouse input sometimes doesn’t work as responsively as it should. Please fix, so that the game correctly detects all extensions it wants.
client: reverted old extensions_string size, unused
ZOMBIEFX_FADEOUT_TIME removed, formattings refs #327
#1 Updated by IR4T4 almost 6 years ago
- Category set to Client
- Target version set to 2.78
Max limits related to the GL extenstions string size/data have been increased (extensions_string[ 8192 ]). This should do the trick for the next release but isn’t a final solution. Extensions string data should be stored in a pointer see http://stackoverflow.com/questions/8500586/what-size-of-an-array-should-i-use-to-print-glgetstringgl-extensions
instead of char to solve our issue finally.
... but we have to update this code area anyway (at least for renderer2). Our used glGetString(GL_EXTENSIONS) function is deprecated in upper OpenGL versions - see http://www.opengl.org/discussion_boards/showthread.php/165539-GL_EXTENSIONS-replacement and if we switch to SDL 2.0 the whole context code might change.
#3 Updated by IR4T4 almost 6 years ago
- Status changed from In Progress to Fixed
- Target version changed from 2.71rc2 to 2.78
- % Done changed from 0 to 100
Issue has been fixed with the glew library http://glew.sourceforge.net/ introduced by Jacker for renderer2. I didn’t realize before it’s also used for renderer1
Command '/gfxinfo’ will print the complete info now.
Internally glconfig_t member extensions_string[MAX_STRING_CHARS * 4] isn’t used for real at engine side anymore but populated and kept for compatibility reasons.
To fix the string with more than 4096 chars on mod side with keept compatibility we have to add a pointer to the full string at the end of glconfig_t. Currently I see no reason to do so: Mods have to adjust their code in that case and in vanilla/legacy mod the extensions_string data affects UI 'FEEDER_GLINFO’ code only which this isn’t used by any menu.