summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp
diff options
context:
space:
mode:
authordegasus <wickmarkus@web.de>2013-01-14 22:59:08 +0100
committerdegasus <wickmarkus@web.de>2013-01-14 22:59:08 +0100
commitff889c0e651e2685d60eb201620de05d3650274a (patch)
tree4a1cc7861624ae469906368880b97161a25790b1 /Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp
parent2f78986e2cc28c7093bb9b7a784d1b3c0ce2e682 (diff)
use attrib pointers in nativeVertexFormat
Diffstat (limited to 'Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp')
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp33
1 files changed, 11 insertions, 22 deletions
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp b/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp
index 5fa0a5552a..954a92b126 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp
@@ -73,39 +73,28 @@ void GLVertexFormat::Initialize(const PortableVertexDeclaration &_vtx_decl)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vm->m_index_buffers);
glBindBuffer(GL_ARRAY_BUFFER, vm->m_vertex_buffers);
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(3, GL_FLOAT, vtx_decl.stride, (u8*)NULL);
+ glEnableVertexAttribArray(SHADER_POSITION_ATTRIB);
+ glVertexAttribPointer(SHADER_POSITION_ATTRIB, 3, GL_FLOAT, GL_FALSE, vtx_decl.stride, (u8*)NULL);
- if (vtx_decl.num_normals >= 1) {
- glEnableClientState(GL_NORMAL_ARRAY);
- glNormalPointer(VarToGL(vtx_decl.normal_gl_type), vtx_decl.stride, (u8*)NULL + vtx_decl.normal_offset[0]);
- if (vtx_decl.num_normals == 3) {
- glEnableVertexAttribArray(SHADER_NORM1_ATTRIB);
- glEnableVertexAttribArray(SHADER_NORM2_ATTRIB);
- glVertexAttribPointer(SHADER_NORM1_ATTRIB, vtx_decl.normal_gl_size, VarToGL(vtx_decl.normal_gl_type), GL_TRUE, vtx_decl.stride, (u8*)NULL + vtx_decl.normal_offset[1]);
- glVertexAttribPointer(SHADER_NORM2_ATTRIB, vtx_decl.normal_gl_size, VarToGL(vtx_decl.normal_gl_type), GL_TRUE, vtx_decl.stride, (u8*)NULL + vtx_decl.normal_offset[2]);
+ for (int i = 0; i < 3; i++) {
+ if (vtx_decl.num_normals > i) {
+ glEnableVertexAttribArray(SHADER_NORM0_ATTRIB+i);
+ glVertexAttribPointer(SHADER_NORM0_ATTRIB+i, vtx_decl.normal_gl_size, VarToGL(vtx_decl.normal_gl_type), GL_TRUE, vtx_decl.stride, (u8*)NULL + vtx_decl.normal_offset[i]);
}
}
for (int i = 0; i < 2; i++) {
if (vtx_decl.color_offset[i] != -1) {
- if (i == 0) {
- glEnableClientState(GL_COLOR_ARRAY);
- glColorPointer(4, GL_UNSIGNED_BYTE, vtx_decl.stride, (u8*)NULL + vtx_decl.color_offset[i]);
- } else {
- glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
- glSecondaryColorPointer(4, GL_UNSIGNED_BYTE, vtx_decl.stride, (u8*)NULL + vtx_decl.color_offset[i]);
- }
+ glEnableVertexAttribArray(SHADER_COLOR0_ATTRIB+i);
+ glVertexAttribPointer(SHADER_COLOR0_ATTRIB+i, 4, GL_UNSIGNED_BYTE, GL_TRUE, vtx_decl.stride, (u8*)NULL + vtx_decl.color_offset[i]);
}
}
for (int i = 0; i < 8; i++) {
if (vtx_decl.texcoord_offset[i] != -1) {
- int id = GL_TEXTURE0 + i;
- glClientActiveTexture(id);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glTexCoordPointer(vtx_decl.texcoord_size[i], VarToGL(vtx_decl.texcoord_gl_type[i]),
- vtx_decl.stride, (u8*)NULL + vtx_decl.texcoord_offset[i]);
+ glEnableVertexAttribArray(SHADER_TEXTURE0_ATTRIB+i);
+ glVertexAttribPointer(SHADER_TEXTURE0_ATTRIB+i, vtx_decl.texcoord_size[i], VarToGL(vtx_decl.texcoord_gl_type[i]),
+ GL_FALSE, vtx_decl.stride, (u8*)NULL + vtx_decl.texcoord_offset[i]);
}
}