From e03e977385c9285ec13695f93e43bb805c4dd0af Mon Sep 17 00:00:00 2001 From: Mike Erwin Date: Thu, 18 May 2017 18:30:09 -0400 Subject: OpenGL: call glProgramUniform only if version >= 4.1 Otherwise crash! Called from OpenSubdiv setup code. Might start using this in more places... --- intern/opensubdiv/opensubdiv_gpu_capi.cc | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'intern/opensubdiv') diff --git a/intern/opensubdiv/opensubdiv_gpu_capi.cc b/intern/opensubdiv/opensubdiv_gpu_capi.cc index 681fc319dce..32474d7cb60 100644 --- a/intern/opensubdiv/opensubdiv_gpu_capi.cc +++ b/intern/opensubdiv/opensubdiv_gpu_capi.cc @@ -296,18 +296,26 @@ GLuint linkProgram(const char *version, const char *define) glGetUniformBlockIndex(program, "Lighting"), 0); - /* TODO: use glUseProgram, glUniform */ - glProgramUniform1i(program, - glGetUniformLocation(program, "texture_buffer"), - 0); /* GL_TEXTURE0 */ - - glProgramUniform1i(program, - glGetUniformLocation(program, "FVarDataOffsetBuffer"), - 30); /* GL_TEXTURE30 */ - - glProgramUniform1i(program, - glGetUniformLocation(program, "FVarDataBuffer"), - 31); /* GL_TEXTURE31 */ + if (GLEW_VERSION_4_1) { + glProgramUniform1i(program, + glGetUniformLocation(program, "texture_buffer"), + 0); /* GL_TEXTURE0 */ + + glProgramUniform1i(program, + glGetUniformLocation(program, "FVarDataOffsetBuffer"), + 30); /* GL_TEXTURE30 */ + + glProgramUniform1i(program, + glGetUniformLocation(program, "FVarDataBuffer"), + 31); /* GL_TEXTURE31 */ + } + else { + glUseProgram(program); + glUniform1i(glGetUniformLocation(program, "texture_buffer"), 0); /* GL_TEXTURE0 */ + glUniform1i(glGetUniformLocation(program, "FVarDataOffsetBuffer"), 30); /* GL_TEXTURE30 */ + glUniform1i(glGetUniformLocation(program, "FVarDataBuffer"), 31); /* GL_TEXTURE31 */ + glUseProgram(0); + } return program; } -- cgit v1.2.3