Without this, some code will enable (and set other parameters for)
whatever random texture unit the previous stage had selected. This can
break any fixed-function rendering, since either it will not have
enabled the correct texture unit, or its correct setup will be
interfered with by another texture unit that shouldn't be enabled. (This
doesn't affect ARB/GLSL shader rendering, since they don't care about
the enabled state, but the GUI (and some debug things) are still FFP in
the default ARB mode.)
Fixes#2833 (in which the fancy water shader selected texture units 5/6,
which then got enabled, and remained enabled forever).
This was SVN commit r16372.
This improves performance quite a lot because it avoids a huge number of
calls from C++ to JS. Check the ticket for performance measurements.
Refs #2913
This was SVN commit r16337.
This avoids vswprintf failures when printing non-ASCII char* strings
from CLogger into the console.
Also convert ScriptInterface::ToString to return UTF-8, to avoid some
utf8_from_wstring calls.
Also remove some unused and redundant CConsole functions.
This was SVN commit r16333.
This fixes the problem where passing a non-ASCII string to
debug_printf(L"%hs", s) caused vswprintf_s to fail on Linux (because it
doesn't know what encoding the char* is meant to have). Now debug
messages will remain as UTF-8 until they reach the OS.
Fixes#3021.
This was SVN commit r16332.
It is necessary to rely on shared los masks, else some visibility
updates will be missing.
Refs #2913, see this ticket for a performance graph.
This was SVN commit r16328.
Some meshes (e.g. pers_gardens_struct with gentangents enabled) have
>32K vertexes, and won't fit in a 2MB VBO. 0ef6c7555e had reduced them
from 4MB to 2MB. So just make the VBOs bigger again, and try not to
worry about the waste of memory.
Fixes#3026, #3042.
This was SVN commit r16309.
Fixes the animals hidden in the FoW, and adds the missing status bars
for mirages.
Also small cleanup of the code.
Refs #2913
This was SVN commit r16281.
Some drivers (at least the Intel drivers on Windows) are slow at
incrementally updating a VBO with hundreds of calls to glBufferSubData
every frame. Performance is significantly better if you use
glBufferData(NULL) to tell it to discard all the previous contents, and
then re-upload all the data at once.
Update CVertexBuffer so that GL_DYNAMIC_DRAW/GL_STREAM_DRAW buffers are
handled with the new mechanism. This requires the caller to hold onto
the backing store so it can be re-uploaded when necessary, and needs a
bit more signalling to indicate exactly what needs uploading.
I see an improvement from roughly 60 to 75 fps on Intel HD Graphics
3000, Windows, 1024x768, Siwa Oasis.
This was SVN commit r16241.