From c80fd202086c83f94f410d3c4210ddb591a7ef26 Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 21 Nov 2015 03:17:58 +0100 Subject: [PATCH] Fix crash if Cg is supported but GLSL is not --- panda/src/glstuff/glCgShaderContext_src.cxx | 2 +- .../src/glstuff/glGraphicsStateGuardian_src.cxx | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/panda/src/glstuff/glCgShaderContext_src.cxx b/panda/src/glstuff/glCgShaderContext_src.cxx index 959982fd52..167d7ed0d8 100644 --- a/panda/src/glstuff/glCgShaderContext_src.cxx +++ b/panda/src/glstuff/glCgShaderContext_src.cxx @@ -108,7 +108,7 @@ CLP(CgShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderConte } } - if (_cg_program != 0) { + if (_cg_program != 0 && _glgsg->_supports_glsl) { if (cgGetProgramProfile(_cg_program) == CG_PROFILE_GLSLC) { _glsl_program = cgGLGetProgramID(_cg_program); diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index bd797c249f..36ff0dec8e 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -1562,6 +1562,22 @@ reset() { _glPatchParameteri = (PFNGLPATCHPARAMETERIPROC) get_extension_func("glPatchParameteri"); } + } else if (_supports_basic_shaders) { + // We don't support GLSL, but we support ARB programs. + _glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) + get_extension_func("glDisableVertexAttribArrayARB"); + _glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) + get_extension_func("glEnableVertexAttribArrayARB"); + + _glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC) + get_extension_func("glVertexAttrib4fvARB"); + _glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC) + get_extension_func("glVertexAttrib4dvARB"); + _glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) + get_extension_func("glVertexAttribPointerARB"); + + _glVertexAttribIPointer = NULL; + _glVertexAttribLPointer = NULL; } #endif