GPU: bind builtin shader for immediate mode

immBindBuiltinProgram extends Gawain’s immBindProgram to use Blender’s
library of built-in shader programs.

It uses imm prefix instead of GPU_ so people won’t be tempted to call
GPU_unbind_program() afterward.

From my understanding, Apache code is not allowed to call GPL code, so
this function needs to be in the GPU lib.
This commit is contained in:
Mike Erwin 2016-08-07 22:11:45 -04:00
parent 8e99eec026
commit 6c65e5a00c
2 changed files with 9 additions and 10 deletions

View File

@ -98,10 +98,12 @@ typedef enum GPUBuiltinShader {
GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader);
GPUShader *GPU_shader_get_builtin_fx_shader(int effects, bool persp);
void GPU_shader_bind_immediate(GPUBuiltinShader);
void GPU_shader_free_builtin_shaders(void);
/* Extend Gawains immBindProgram to use Blenders library of built-in shader programs.
* Use immUnbindProgram() when done. */
void immBindBuiltinProgram(GPUBuiltinShader);
/* Vertex attributes for shaders */
#define GPU_MAX_ATTRIB 32

View File

@ -464,13 +464,6 @@ void GPU_shader_bind(GPUShader *shader)
GPU_ASSERT_NO_GL_ERRORS("Post Shader Bind");
}
void GPU_shader_bind_immediate(GPUBuiltinShader shader_id)
{
GPUShader *shader = GPU_shader_get_builtin_shader(shader_id);
GPU_shader_bind(shader);
bind_attrib_locations(&immVertexFormat, shader->program);
}
void GPU_shader_unbind(void)
{
GPU_ASSERT_NO_GL_ERRORS("Pre Shader Unbind");
@ -782,4 +775,8 @@ void GPU_shader_free_builtin_shaders(void)
}
}
void immBindBuiltinProgram(GPUBuiltinShader shader_id)
{
GPUShader *shader = GPU_shader_get_builtin_shader(shader_id);
immBindProgram(shader->program);
}