Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stokes <kupomail@gmail.com>2012-04-25 08:58:59 +0400
committerDaniel Stokes <kupomail@gmail.com>2012-04-25 08:58:59 +0400
commit2dc836524ffb9ecb47040f612a10d7c24acf42c8 (patch)
tree3d30b3c03fde471095fd76a0fd83e9bd9ac046c0
parentf563a9825f567be7090a94bc4f33fa2c71a2a3a2 (diff)
Fixing up UVs when using VBOs in the BGE as well as removing some unnecessary OpenGL commands.
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp20
1 files changed, 6 insertions, 14 deletions
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
index a6420b46783..f8900685d2b 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp
@@ -88,8 +88,8 @@ void VBO::UpdateData()
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 @@ void VBO::Draw(int texco_num, RAS_IRasterizer::TexCoGen* texco, int attrib_num,
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 @@ void VBO::Draw(int texco_num, RAS_IRasterizer::TexCoGen* texco, int attrib_num,
{
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;