1
0
forked from 0ad/0ad

Do not use GPUSkinning without glsl [Crash fix]

Disable GPUSkinning when glsl is disabled, because VertexAttribPointer
is not implemented on ARB/GLES and it is called by GPUSkinning.

Differential Revision: D2423
Reviewed by: vladislavbelov
Fixes: #5635

This was SVN commit r24101.
This commit is contained in:
Angen 2020-10-13 16:48:04 +00:00
parent 4eb13e620a
commit dcdc17b2dd

View File

@ -112,6 +112,12 @@ void SRenderingOptions::ReadConfig()
CFG_GET_VAL("gpuskinning", m_GPUSkinning); CFG_GET_VAL("gpuskinning", m_GPUSkinning);
CFG_GET_VAL("renderactors", m_RenderActors); CFG_GET_VAL("renderactors", m_RenderActors);
if (m_GPUSkinning && !m_PreferGLSL)
{
LOGWARNING("GPUSkinning have been disabled, because it is not supported with PreferGLSL disabled.");
m_GPUSkinning = false;
}
} }
void SRenderingOptions::SetShadows(bool value) void SRenderingOptions::SetShadows(bool value)
@ -134,6 +140,14 @@ void SRenderingOptions::SetFog(bool value)
void SRenderingOptions::SetPreferGLSL(bool value) void SRenderingOptions::SetPreferGLSL(bool value)
{ {
if (m_GPUSkinning && !value)
{
LOGWARNING("GPUSkinning have been disabled, because it is not supported with PreferGLSL disabled.");
m_GPUSkinning = false;
}
else if (!m_GPUSkinning && value)
CFG_GET_VAL("gpuskinning", m_GPUSkinning);
m_PreferGLSL = value; m_PreferGLSL = value;
g_Renderer.MakeShadersDirty(); g_Renderer.MakeShadersDirty();
g_Renderer.RecomputeSystemShaderDefines(); g_Renderer.RecomputeSystemShaderDefines();