Jason Green : wined3d: Allow drawPrim to create and use the GLSL program.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jun 9 11:16:31 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: d5d4568450c2ca087122a06e39814af7ca8d6d14
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=d5d4568450c2ca087122a06e39814af7ca8d6d14

Author: Jason Green <jave27 at gmail.com>
Date:   Fri Jun  9 03:37:45 2006 -0400

wined3d: Allow drawPrim to create and use the GLSL program.

---

 dlls/wined3d/drawprim.c        |   15 ++++++++++++++-
 dlls/wined3d/wined3d_private.h |    3 +++
 2 files changed, 17 insertions(+), 1 deletions(-)

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 @@ #endif
 
         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 @@ extern const SHADER_OPCODE* shader_get_o
 /* 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);




More information about the wine-cvs mailing list