[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20549] branches/bb_dev/source/gameengine/ Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp: Don' t create VBO at the same time as Display list.

Benoit Bolsee benoit.bolsee at online.be
Mon Jun 1 12:59:18 CEST 2009


Revision: 20549
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20549
Author:   ben2610
Date:     2009-06-01 12:59:17 +0200 (Mon, 01 Jun 2009)

Log Message:
-----------
Don't create VBO at the same time as Display list.

Modified Paths:
--------------
    branches/bb_dev/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp

Modified: branches/bb_dev/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
===================================================================
--- branches/bb_dev/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp	2009-06-01 09:44:41 UTC (rev 20548)
+++ branches/bb_dev/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp	2009-06-01 10:59:17 UTC (rev 20549)
@@ -408,41 +408,43 @@
 		else
 			glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
 
-		if(GLEW_ARB_vertex_buffer_object) {
-			if(!it.array->m_vboSlot) InitVboSlot(it.array, &ms);
-			if(it.array->m_vboSlot)
-			{
-				glBindBuffer(GL_ARRAY_BUFFER_ARB, it.array->m_vboSlot->m_vertVbo);
-				glVertexPointer(3, GL_FLOAT, 0, 0);
-				glBindBuffer(GL_ARRAY_BUFFER_ARB, it.array->m_vboSlot->m_normalVbo);
-				glNormalPointer(GL_FLOAT, 0, 0);
-				if(!wireframe) {
-					TexCoordPtr(it.array);
-					if(glIsEnabled(GL_COLOR_ARRAY))
-					{
-						glBindBuffer(GL_ARRAY_BUFFER_ARB, it.array->m_vboSlot->m_colorVbo);
-						glColorPointer(4, GL_UNSIGNED_BYTE, 0, 0);
-					}
+		// no need to create VBO if we are making a list
+		if(GLEW_ARB_vertex_buffer_object && !ms.m_bDisplayList) {
+			if(!it.array->m_vboSlot) 
+				InitVboSlot(it.array, &ms);
+		}
+		if(it.array->m_vboSlot)
+		{
+			glBindBuffer(GL_ARRAY_BUFFER_ARB, it.array->m_vboSlot->m_vertVbo);
+			glVertexPointer(3, GL_FLOAT, 0, 0);
+			glBindBuffer(GL_ARRAY_BUFFER_ARB, it.array->m_vboSlot->m_normalVbo);
+			glNormalPointer(GL_FLOAT, 0, 0);
+			if(!wireframe) {
+				TexCoordPtr(it.array);
+				if(glIsEnabled(GL_COLOR_ARRAY))
+				{
+					glBindBuffer(GL_ARRAY_BUFFER_ARB, it.array->m_vboSlot->m_colorVbo);
+					glColorPointer(4, GL_UNSIGNED_BYTE, 0, 0);
 				}
-				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, it.array->m_vboSlot->m_indexVbo);
-				// a little clean up...
-				glDrawElements(drawmode, it.totindex, GL_UNSIGNED_SHORT, 0);
-				glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
-				glBindBuffer(GL_ARRAY_BUFFER_ARB, 0);
-				glVertexPointer(3, GL_FLOAT, 0, 0);
-				glNormalPointer(GL_FLOAT, 0, 0);
-				if(!wireframe) {
-					for(unit=0; unit<m_texco_num; unit++) {
-						glClientActiveTextureARB(GL_TEXTURE0_ARB+unit);
-						glBindBuffer(GL_ARRAY_BUFFER_ARB, 0);
-						glTexCoordPointer(2, GL_FLOAT, 0, 0);
-					}
-					if(glIsEnabled(GL_COLOR_ARRAY))
-						glColorPointer(4, GL_UNSIGNED_BYTE, 0, 0);
+			}
+			glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, it.array->m_vboSlot->m_indexVbo);
+			// a little clean up...
+			glDrawElements(drawmode, it.totindex, GL_UNSIGNED_SHORT, 0);
+			glBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+			glBindBuffer(GL_ARRAY_BUFFER_ARB, 0);
+			glVertexPointer(3, GL_FLOAT, 0, 0);
+			glNormalPointer(GL_FLOAT, 0, 0);
+			if(!wireframe) {
+				for(unit=0; unit<m_texco_num; unit++) {
+					glClientActiveTextureARB(GL_TEXTURE0_ARB+unit);
+					glBindBuffer(GL_ARRAY_BUFFER_ARB, 0);
+					glTexCoordPointer(2, GL_FLOAT, 0, 0);
 				}
+				if(glIsEnabled(GL_COLOR_ARRAY))
+					glColorPointer(4, GL_UNSIGNED_BYTE, 0, 0);
 			}
-		}
-		if(!it.array->m_vboSlot) {
+		} 
+		else {
 			glVertexPointer(3, GL_FLOAT, stride, it.vertex->getXYZ());
 			glNormalPointer(GL_FLOAT, stride, it.vertex->getNormal());
 			if(!wireframe) {





More information about the Bf-blender-cvs mailing list