From dcdc17b2ddfd4e2c6f2d65791e7b442dc1096766 Mon Sep 17 00:00:00 2001 From: Angen Date: Tue, 13 Oct 2020 16:48:04 +0000 Subject: [PATCH] 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. --- source/renderer/RenderingOptions.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/renderer/RenderingOptions.cpp b/source/renderer/RenderingOptions.cpp index 130ee80a38..c3ab3d54d6 100755 --- a/source/renderer/RenderingOptions.cpp +++ b/source/renderer/RenderingOptions.cpp @@ -112,6 +112,12 @@ void SRenderingOptions::ReadConfig() CFG_GET_VAL("gpuskinning", m_GPUSkinning); 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) @@ -134,6 +140,14 @@ void SRenderingOptions::SetFog(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; g_Renderer.MakeShadersDirty(); g_Renderer.RecomputeSystemShaderDefines();