wined3d: Allow drawPrim to create and use the GLSL program.
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index 853518f..f12e046 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -1920,7 +1920,20 @@
TRACE("Loaded arrays\n");
- /* TODO: Bind the correct GLSL shader program here. */
+ /* Bind the correct GLSL shader program based on the currently set vertex & pixel shaders. */
+ if (wined3d_settings.shader_mode == SHADER_GLSL) {
+ GLhandleARB programId;
+
+ set_glsl_shader_program(iface);
+ programId = This->stateBlock->shaderPrgId;
+
+ if (programId != 0) {
+ /* Start using this program ID */
+ TRACE_(d3d_shader)("Using GLSL program %u\n", programId);
+ GL_EXTCALL(glUseProgramObjectARB(programId));
+ checkGLcall("glUseProgramObjectARB");
+ }
+ }
if (useVertexShaderFunction) {
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 31afe74..f1ec8bc 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1317,6 +1317,9 @@
/* ARB shader program Prototypes */
extern void shader_hw_def(SHADER_OPCODE_ARG *arg);
+/* GLSL helper programs */
+extern void set_glsl_shader_program(IWineD3DDevice *iface);
+
/** The following translate DirectX pixel/vertex shader opcodes to GLSL lines */
extern void shader_glsl_map2gl(SHADER_OPCODE_ARG* arg);
extern void shader_glsl_arith(SHADER_OPCODE_ARG* arg);