[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45956] branches/soc-2011-cucumber/source/ gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp: Fixing up UVs when using VBOs in the BGE as well as removing some unnecessary OpenGL commands .
Daniel Stokes
kupomail at gmail.com
Wed Apr 25 06:59:00 CEST 2012
Revision: 45956
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45956
Author: kupoman
Date: 2012-04-25 04:58:59 +0000 (Wed, 25 Apr 2012)
Log Message:
-----------
Fixing up UVs when using VBOs in the BGE as well as removing some unnecessary OpenGL commands.
Modified Paths:
--------------
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
Modified: branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
===================================================================
--- branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp 2012-04-25 03:44:01 UTC (rev 45955)
+++ branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp 2012-04-25 04:58:59 UTC (rev 45956)
@@ -88,8 +88,8 @@
memcpy(&this->vbo[j+6], data->m_vertex[i].getTangent(), sizeof(float)*4);
memcpy(&this->vbo[j+10], data->m_vertex[i].getRGBA(), sizeof(char)*4);
- for (unsigned int k=0; k<RAS_TexVert::MAX_UNIT; k+=2)
- memcpy(&this->vbo[j+11+k], data->m_vertex[i].getUV(k), sizeof(float)*2);
+ for (unsigned int k=0; k<RAS_TexVert::MAX_UNIT; k++)
+ memcpy(&this->vbo[j+11+(k*2)], data->m_vertex[i].getUV(k), sizeof(float)*2);
}
// Upload Data to GPU
@@ -131,41 +131,36 @@
for (int unit=0; unit<texco_num; ++unit)
{
glClientActiveTexture(GL_TEXTURE0_ARB + unit);
-
switch(texco[unit])
{
case RAS_IRasterizer::RAS_TEXCO_ORCO:
case RAS_IRasterizer::RAS_TEXCO_GLOB:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(3, GL_FLOAT, this->stride, this->vertex_offset);
break;
case RAS_IRasterizer::RAS_TEXCO_UV:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, this->stride, (void*)((intptr_t)this->uv_offset+(sizeof(GLfloat)*2*unit)));
break;
case RAS_IRasterizer::RAS_TEXCO_NORM:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(3, GL_FLOAT, this->stride, this->normal_offset);
break;
case RAS_IRasterizer::RAS_TEXTANGENT:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(4, GL_FLOAT, this->stride, this->tangent_offset);
break;
default:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(1, GL_SHORT, this->stride, this->dummy_offset);
break;
}
}
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
else //TexFace
{
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, this->stride, this->uv_offset);
}
@@ -179,22 +174,19 @@
{
case RAS_IRasterizer::RAS_TEXCO_ORCO:
case RAS_IRasterizer::RAS_TEXCO_GLOB:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
glVertexAttribPointerARB(unit, 3, GL_FLOAT, GL_FALSE, this->stride, this->vertex_offset);
glEnableVertexAttribArrayARB(unit);
break;
case RAS_IRasterizer::RAS_TEXCO_UV:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
- glVertexAttribPointerARB(unit, 2, GL_FLOAT, GL_FALSE, this->stride, (void*)((intptr_t)this->uv_offset+(sizeof(GLfloat)*2*uv++)));
+ glVertexAttribPointerARB(unit, 2, GL_FLOAT, GL_FALSE, this->stride, (void*)((intptr_t)this->uv_offset+uv));
+ uv += sizeof(GLfloat)*2;
glEnableVertexAttribArrayARB(unit);
break;
case RAS_IRasterizer::RAS_TEXCO_NORM:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
glVertexAttribPointerARB(unit, 2, GL_FLOAT, GL_FALSE, stride, this->normal_offset);
glEnableVertexAttribArrayARB(unit);
break;
case RAS_IRasterizer::RAS_TEXTANGENT:
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->vbo_id);
glVertexAttribPointerARB(unit, 4, GL_FLOAT, GL_FALSE, this->stride, this->tangent_offset);
glEnableVertexAttribArrayARB(unit);
break;
More information about the Bf-blender-cvs
mailing list