Revision: 15387
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15387
Author:   blendix
Date:     2008-06-29 23:51:27 +0200 (Sun, 29 Jun 2008)

Log Message:
-----------

Fix for bug #7753: after game engine drawing with vertex arrays,
nurbs/curves/text dissappears.

This also removes the "vertex arrays" option and enables it always
for OpenGL version >= 1.1 - there's no need to have an option to
make things render faster disabled by default, also it should work
stable now.

Modified Paths:
--------------
    trunk/blender/source/blender/makesdna/DNA_userdef_types.h
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/blender/src/space.c
    trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
    trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
    
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
    
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp

Modified: trunk/blender/source/blender/makesdna/DNA_userdef_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_userdef_types.h   2008-06-29 
21:06:18 UTC (rev 15386)
+++ trunk/blender/source/blender/makesdna/DNA_userdef_types.h   2008-06-29 
21:51:27 UTC (rev 15387)
@@ -310,7 +310,7 @@
 #define        USER_DUP_ACT                    (1 << 10)
 
 /* gameflags */
-#define USER_VERTEX_ARRAYS             1
+#define USER_DEPRECATED_FLAG   1
 #define USER_DISABLE_SOUND             2
 #define USER_DISABLE_MIPMAP            4
 

Modified: trunk/blender/source/blender/src/drawview.c
===================================================================
--- trunk/blender/source/blender/src/drawview.c 2008-06-29 21:06:18 UTC (rev 
15386)
+++ trunk/blender/source/blender/src/drawview.c 2008-06-29 21:51:27 UTC (rev 
15387)
@@ -246,7 +246,8 @@
        glDisable(GL_COLOR_MATERIAL);
 }
 
-/* also called when render 'ogl' */
+/* also called when render 'ogl'
+   keep synced with Myinit_gl_stuff in the game engine! */
 void init_gl_stuff(void)       
 {
        float mat_ambient[] = { 0.0, 0.0, 0.0, 0.0 };

Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c    2008-06-29 21:06:18 UTC (rev 
15386)
+++ trunk/blender/source/blender/src/space.c    2008-06-29 21:51:27 UTC (rev 
15387)
@@ -378,9 +378,6 @@
                
        if ( (syshandle = SYS_GetSystem()) ) {
                /* User defined settings */
-               a= (U.gameflags & USER_VERTEX_ARRAYS);
-               SYS_WriteCommandLineInt(syshandle, "vertexarrays", a);
-
                a= (U.gameflags & USER_DISABLE_SOUND);
                SYS_WriteCommandLineInt(syshandle, "noaudio", a);
 
@@ -4255,15 +4252,11 @@
                uiDefButS(block, MENU, B_GLRESLIMITCHANGED, "GL Texture Clamp 
Off%x0|%l|GL Texture Clamp 8192%x8192|GL Texture Clamp 4096%x4096|GL Texture 
Clamp 2048%x2048|GL Texture Clamp 1024%x1024|GL Texture Clamp 512%x512|GL 
Texture Clamp 256%x256|GL Texture Clamp 128%x128",
                                                                                
                        (xpos+edgsp+(5*mpref)+(5*midsp)),y4,mpref,buth, 
&(U.glreslimit), 0, 0, 0, 0, "Limit the texture size to save graphics memory");
                
-               uiDefButBitI(block, TOG, USER_VERTEX_ARRAYS, 0, "Vertex Arrays",
-                       (xpos+edgsp+(5*mpref)+(5*midsp)),y3,mpref,buth,
-                       &(U.gameflags), 0, 0, 0, 0, "Toggles between vertex 
arrays on (less reliable) and off (more reliable)");
-
                uiDefButI(block, NUM, 0, "Time Out ",
-                       (xpos+edgsp+(5*mpref)+(5*midsp)), y2, mpref, buth, 
+                       (xpos+edgsp+(5*mpref)+(5*midsp)), y3, mpref, buth, 
                        &U.textimeout, 0.0, 3600.0, 30, 2, "Time since last 
access of a GL texture in seconds after which it is freed. (Set to 0 to keep 
textures allocated)");
                uiDefButI(block, NUM, 0, "Collect Rate ",
-                       (xpos+edgsp+(5*mpref)+(5*midsp)), y1, mpref, buth, 
+                       (xpos+edgsp+(5*mpref)+(5*midsp)), y2, mpref, buth, 
                        &U.texcollectrate, 1.0, 3600.0, 30, 2, "Number of 
seconds between each run of the GL texture garbage collector.");
 
                /* *** */

Modified: 
trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp     
2008-06-29 21:06:18 UTC (rev 15386)
+++ trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp     
2008-06-29 21:51:27 UTC (rev 15387)
@@ -165,20 +165,14 @@
                RAS_IRenderTools* rendertools = new KX_BlenderRenderTools();
                RAS_IRasterizer* rasterizer = NULL;
                
-               // let's see if we want to use vertexarrays or not
-               int usevta = SYS_GetCommandLineInt(syshandle,"vertexarrays",1);
-               bool useVertexArrays = (usevta > 0);
-               
-               bool lock_arrays = (displaylists && useVertexArrays);
-
-               if(displaylists){
-                       if (useVertexArrays)
-                               rasterizer = new RAS_ListRasterizer(canvas, 
true, lock_arrays);
+               if(displaylists) {
+                       if (GLEW_VERSION_1_1)
+                               rasterizer = new RAS_ListRasterizer(canvas, 
true, true);
                        else
                                rasterizer = new RAS_ListRasterizer(canvas);
                }
-               else if (useVertexArrays && GLEW_VERSION_1_1)
-                       rasterizer = new RAS_VAOpenGLRasterizer(canvas, 
lock_arrays);
+               else if (GLEW_VERSION_1_1)
+                       rasterizer = new RAS_VAOpenGLRasterizer(canvas, false);
                else
                        rasterizer = new RAS_OpenGLRasterizer(canvas);
                
@@ -513,16 +507,14 @@
                RAS_IRenderTools* rendertools = new KX_BlenderRenderTools();
                RAS_IRasterizer* rasterizer = NULL;
 
-               // let's see if we want to use vertexarrays or not
-               int usevta = SYS_GetCommandLineInt(syshandle,"vertexarrays",1);
-               bool useVertexArrays = (usevta > 0);
-
-               bool lock_arrays = (displaylists && useVertexArrays);
-
-               if(displaylists && !useVertexArrays)
-                       rasterizer = new RAS_ListRasterizer(canvas);
-               else if (useVertexArrays && GLEW_VERSION_1_1)
-                       rasterizer = new RAS_VAOpenGLRasterizer(canvas, 
lock_arrays);
+               if(displaylists) {
+                       if (GLEW_VERSION_1_1)
+                               rasterizer = new RAS_ListRasterizer(canvas, 
true, true);
+                       else
+                               rasterizer = new RAS_ListRasterizer(canvas);
+               }
+               else if (GLEW_VERSION_1_1)
+                       rasterizer = new RAS_VAOpenGLRasterizer(canvas, false);
                else
                        rasterizer = new RAS_OpenGLRasterizer(canvas);
 

Modified: trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp        
2008-06-29 21:06:18 UTC (rev 15386)
+++ trunk/blender/source/gameengine/GamePlayer/ghost/GPG_Application.cpp        
2008-06-29 21:51:27 UTC (rev 15387)
@@ -496,7 +496,6 @@
 
                bool fixed_framerate= (SYS_GetCommandLineInt(syshandle, 
"fixed_framerate", fixedFr) != 0);
                bool frameRate = (SYS_GetCommandLineInt(syshandle, 
"show_framerate", 0) != 0);
-               bool useVertexArrays = 
SYS_GetCommandLineInt(syshandle,"vertexarrays",1) != 0;
                bool useLists = (SYS_GetCommandLineInt(syshandle, 
"displaylists", G.fileflags & G_FILE_DIAPLAY_LISTS) != 0);
 
                if(GLEW_ARB_multitexture && GLEW_VERSION_1_1) {
@@ -514,16 +513,17 @@
                if (!m_rendertools)
                        goto initFailed;
                
-               if(useLists)
-                       if (useVertexArrays) {
+               if(useLists) {
+                       if(GLEW_VERSION_1_1)
                                m_rasterizer = new RAS_ListRasterizer(m_canvas, 
true);
-                       } else {
+                       else
                                m_rasterizer = new RAS_ListRasterizer(m_canvas);
-                       }
-               else if (useVertexArrays && GLEW_VERSION_1_1)
+               }
+               else if (GLEW_VERSION_1_1)
                        m_rasterizer = new RAS_VAOpenGLRasterizer(m_canvas);
                else
                        m_rasterizer = new RAS_OpenGLRasterizer(m_canvas);
+
                m_rasterizer->SetStereoMode((RAS_IRasterizer::StereoMode) 
stereoMode);
                if (!m_rasterizer)
                        goto initFailed;

Modified: trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
===================================================================
--- trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp      
2008-06-29 21:06:18 UTC (rev 15386)
+++ trunk/blender/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp      
2008-06-29 21:51:27 UTC (rev 15387)
@@ -187,11 +187,10 @@
        printf("       show_framerate     0         Show the frame rate\n");
        printf("       show_properties    0         Show debug properties\n");
        printf("       show_profile       0         Show profiling 
information\n");
-       printf("       vertexarrays       1         Enable vertex arrays\n");
        printf("       blender_material   0         Enable material 
settings\n");
        printf("\n");
        printf("example: %s -p 10 10 320 200 -g noaudio c:\\loadtest.blend\n", 
program);
-       printf("example: %s -g vertexarrays = 0 c:\\loadtest.blend\n", program);
+       printf("example: %s -g show_framerate = 0 c:\\loadtest.blend\n", 
program);
 }
 
 char *get_filename(int argc, char **argv) {

Modified: 
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
===================================================================
--- 
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
    2008-06-29 21:06:18 UTC (rev 15386)
+++ 
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
    2008-06-29 21:51:27 UTC (rev 15387)
@@ -125,6 +125,9 @@
        glDisable(GL_TEXTURE_1D);
        glDisable(GL_TEXTURE_2D);
 
+       glEnableClientState(GL_VERTEX_ARRAY);
+       glEnableClientState(GL_NORMAL_ARRAY);
+
        glPixelTransferi(GL_MAP_COLOR, GL_FALSE);
        glPixelTransferi(GL_RED_SCALE, 1);
        glPixelTransferi(GL_RED_BIAS, 0);

Modified: 
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
===================================================================
--- 
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
  2008-06-29 21:06:18 UTC (rev 15386)
+++ 
trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
  2008-06-29 21:51:27 UTC (rev 15387)
@@ -91,9 +91,10 @@
 
 void RAS_VAOpenGLRasterizer::Exit()
 {
-       glDisableClientState(GL_VERTEX_ARRAY);
+       glEnableClientState(GL_VERTEX_ARRAY);
+       glEnableClientState(GL_NORMAL_ARRAY);
+       glDisableClientState(GL_TEXTURE_COORD_ARRAY);
        glDisableClientState(GL_COLOR_ARRAY);
-       glDisableClientState(GL_NORMAL_ARRAY);
        EnableTextures(false);
 
        RAS_OpenGLRasterizer::Exit();


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

Reply via email to