The force legacy device graphics restriction is needed for ironlake graphics cards. But newer generations in pentium/celeron processors also are named just "Intel(R) HD Graphics" without any number.
The newest drivers for ironlake graphics card is 8.15 and it's unlikely that it will get an update. So assume that all drivers older than 9.x are ironlake generation or that are too old to run STK anyway.
This fixes errors for Intel HD4000 on Windows.
My understending of this issue is following:
- a shader assigned two textures, i.e. texture1 = sampler1, texture2=sampler2
- then next shader (i.e. importance sampling specular) assigned two textures: texture1=sampler1, texture2=without_sampler
- when we executed setTextureUnits, the glBindSampler function wasn't called at all, so the drivers were trying to use combination texture2=sampler2, even though the sampler2 was prepared for different texture and most likely was already deleted.
We can just always call the glBindSampler function, so that if texture doesn't have a sampler, it will execute it with sampler_id=0 param, which is practically an "unbind" function.
It's a bit ugly solution because we should handle it properly in one place and not add another sRGB correction... But it's already working solution and it doesn't affect the OpenGL renderer, so we can use it until better fix will be done.
Now the GLES renderer looks almost the same as the original OpenGL 3.x one :)
It should be much more comfortable on small devices.
Though it's not possible to get default screen orientation (and real device orientation) using NDK functions, so at this stage user has to manually choose if he needs "tablet" or "phone" accelerometer.
It's PITA because they broke it at it doesn't look that they are going to do something with it.
The plural form for number 14 is broken because the condition is bad. It should be n%100>14 instead of n%100>=14. In the past it was using 3rd form for numbers 12, 13, 14 and it's the proper form for these numbers. The new format uses 2nd form for number 14.
Moreover the condition for third form is just a negation of the first and second form, so that the 4th form actually never happens.
Also the condition for 3rd form is ambiguous. Should it be
(n!=1 && (n%10>=0 && n%10<=1)) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14)
or maybe
n!=1 && ((n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14))
Based on Unicode plural rules, the 4th form should be used for floating point numbers, but it's not supported by tinygettext anyway.
In short, handle the new format in the same way as it was before, so that the 4th form is useless, but at least everything works properly.
* Change grand-prix node for the new GP point system
* New GP point system
* Add parachute characteristics for rank and speed time multipliers
* Add new parachute characteristics
* typo fix
* Add rank and speed parachutes characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add rank and speed parachute characteristics
* Add logic for parachute time scaling according to rank
* Add logic for parachute time scaling according to speed
* Separate GP and parachute branches
* Separate GP and parachute branches
It's not a perfect solution because at least on my device internal storage is much faster than sd card. But at least it should be much safer to choose a path with more free space.
It allows to enable it easily in GLES renderer. And we check if this extension is available anyway because it's needed for shadows, so we can use it for other shaders too.
It should depend on features available in graphics drivers and not on headers that were used for compilation.
In theory there was a possible case that GL_VERSION_3_3 was not defined and CVS->getGLSLVersion() >= 330 was true, so that bind wasn't done at all.
And still GL_VERSION_3_3 should be always true for OpenGL renderer because it's defined in glew.
It's not 100% true because GLES has different versions numbering. For example it doesn't have geometry shaders even if they were introduced in GLSL 1.50 (OpenGL 3.2).
But still in this way we make sure that it uses the same features on all devices, no mater if it's GLES 3.0, 3.1, 3.2 etc.