Revision: 28848
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28848
Author:   moguri
Date:     2010-05-19 07:41:30 +0200 (Wed, 19 May 2010)

Log Message:
-----------
Getting geometry shaders working. For the time being GL_GEOMETRY_INPUT_TYPE_EXT 
is set to GL_TRIANGLES and GL_GEOMETRY_OUTPUT_TYPE_EXT is set to 
GL_TRIANGLE_STRIP. I'll add the ability to change these later.

Modified Paths:
--------------
    branches/soc-2010-moguri/source/blender/gpu/intern/gpu_extensions.c

Modified: branches/soc-2010-moguri/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- branches/soc-2010-moguri/source/blender/gpu/intern/gpu_extensions.c 
2010-05-19 05:39:42 UTC (rev 28847)
+++ branches/soc-2010-moguri/source/blender/gpu/intern/gpu_extensions.c 
2010-05-19 05:41:30 UTC (rev 28848)
@@ -918,6 +918,7 @@
 GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, 
const char *geomcode, /*GPUShader *lib,*/ const char *libcode)
 {
        GLint status;
+       GLint temp;
        GLcharARB log[5000];
        const char *fragsource[2];
        GLsizei length = 0;
@@ -935,7 +936,10 @@
                shader->fragment = 
glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
        if(geomcode)
                if(!GL_EXT_geometry_shader4)
+               {
+                       shader->geometry = 0;
                        printf("Geometry shaders not supported, ignoring...\n");
+               }
                else
                        shader->geometry = 
glCreateShaderObjectARB(GL_GEOMETRY_SHADER_EXT);
        shader->object = glCreateProgramObjectARB();
@@ -991,6 +995,12 @@
                glCompileShaderARB(shader->geometry);
                glGetObjectParameterivARB(shader->geometry, 
GL_OBJECT_COMPILE_STATUS_ARB, &status);
 
+               glProgramParameteriEXT(shader->object, 
GL_GEOMETRY_INPUT_TYPE_EXT, GL_TRIANGLES);
+               glProgramParameteriEXT(shader->object, 
GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_TRIANGLE_STRIP);
+
+               glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT, &temp);
+               glProgramParameteriEXT(shader->object, 
GL_GEOMETRY_VERTICES_OUT_EXT, temp);
+       
                if (!status) {
                        glGetInfoLogARB(shader->geometry, sizeof(log), &length, 
log);
                        shader_print_errors("compile", log, geomcode);


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to