From bfb0ad1e61a4563bdbb4aeefb70fae782dc9388f Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Wed, 18 Apr 2012 21:15:15 +0000 Subject: [PATCH] tutorial: use an interleaved vertex/color buffer. --- test/tutorial/tut02.cpp | 53 +++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 34 deletions(-) diff --git a/test/tutorial/tut02.cpp b/test/tutorial/tut02.cpp index f33679b2..747259de 100644 --- a/test/tutorial/tut02.cpp +++ b/test/tutorial/tut02.cpp @@ -47,25 +47,16 @@ public: { m_angle = 0; - /* Front */ - m_vertices[0] = vec3(-1.0, -1.0, 1.0); - m_vertices[1] = vec3( 1.0, -1.0, 1.0); - m_vertices[2] = vec3( 1.0, 1.0, 1.0); - m_vertices[3] = vec3(-1.0, 1.0, 1.0); + /* Front vertices/colors */ + m_mesh[0] = vec3(-1.0, -1.0, 1.0); m_mesh[1] = vec3(1.0, 0.0, 1.0); + m_mesh[2] = vec3( 1.0, -1.0, 1.0); m_mesh[3] = vec3(0.0, 1.0, 0.0); + m_mesh[4] = vec3( 1.0, 1.0, 1.0); m_mesh[5] = vec3(1.0, 0.5, 0.0); + m_mesh[6] = vec3(-1.0, 1.0, 1.0); m_mesh[7] = vec3(1.0, 1.0, 0.0); /* Back */ - m_vertices[4] = vec3(-1.0, -1.0, -1.0); - m_vertices[5] = vec3( 1.0, -1.0, -1.0); - m_vertices[6] = vec3( 1.0, 1.0, -1.0); - m_vertices[7] = vec3(-1.0, 1.0, -1.0); - - m_colors[0] = vec3(1.0, 0.0, 0.0); - m_colors[1] = vec3(0.0, 1.0, 0.0); - m_colors[2] = vec3(0.0, 0.0, 1.0); - m_colors[3] = vec3(1.0, 1.0, 1.0); - m_colors[4] = vec3(1.0, 0.0, 0.0); - m_colors[5] = vec3(0.0, 1.0, 0.0); - m_colors[6] = vec3(0.0, 0.0, 1.0); - m_colors[7] = vec3(1.0, 1.0, 1.0); + m_mesh[8] = vec3(-1.0, -1.0, -1.0); m_mesh[9] = vec3(1.0, 0.0, 0.0); + m_mesh[10] = vec3( 1.0, -1.0, -1.0); m_mesh[11] = vec3(0.0, 0.5, 0.0); + m_mesh[12] = vec3( 1.0, 1.0, -1.0); m_mesh[13] = vec3(0.0, 0.5, 1.0); + m_mesh[14] = vec3(-1.0, 1.0, -1.0); m_mesh[15] = vec3(0.0, 0.0, 1.0); m_indices[0] = i16vec3(0, 1, 2); m_indices[1] = i16vec3(2, 3, 0); @@ -145,19 +136,14 @@ public: VertexUsage::Color, 0); m_vdecl = - new VertexDeclaration(VertexStream(VertexUsage::Position), - VertexStream(VertexUsage::Color)); + new VertexDeclaration(VertexStream(VertexUsage::Position, + VertexUsage::Color)); - m_vbo = new VertexBuffer(sizeof(m_vertices)); - void *vertices = m_vbo->Lock(0, 0); - memcpy(vertices, m_vertices, sizeof(m_vertices)); + m_vbo = new VertexBuffer(sizeof(m_mesh)); + void *mesh = m_vbo->Lock(0, 0); + memcpy(mesh, m_mesh, sizeof(m_mesh)); m_vbo->Unlock(); - m_cbo = new VertexBuffer(sizeof(m_colors)); - void *colors = m_cbo->Lock(0, 0); - memcpy(colors, m_colors, sizeof(m_colors)); - m_cbo->Unlock(); - #if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ && !defined _XBOX && !defined USE_D3D9 /* Method 1: store vertex buffer on the GPU memory */ glGenBuffers(1, &m_ibo); @@ -180,12 +166,11 @@ public: m_ready = true; } - Video::SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); + Video::SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); m_shader->Bind(); m_shader->SetUniform(m_mvp, m_matrix); - m_vdecl->SetStream(m_vbo, m_coord); - m_vdecl->SetStream(m_cbo, m_color); + m_vdecl->SetStream(m_vbo, m_coord, m_color); m_vdecl->Bind(); #if defined _XBOX || defined USE_D3D9 @@ -205,6 +190,7 @@ public: glBindBuffer(GL_ARRAY_BUFFER, 0); #else + /* FIXME */ glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(3, GL_FLOAT, 0, m_vertices); glDisableClientState(GL_VERTEX_ARRAY); @@ -215,14 +201,13 @@ public: private: float m_angle; mat4 m_matrix; - vec3 m_vertices[8]; - vec3 m_colors[8]; + vec3 m_mesh[16]; i16vec3 m_indices[12]; Shader *m_shader; ShaderAttrib m_coord, m_color; ShaderUniform m_mvp; VertexDeclaration *m_vdecl; - VertexBuffer *m_vbo, *m_cbo; + VertexBuffer *m_vbo; #if defined USE_D3D9 IDirect3DIndexBuffer9 *m_ibo; #elif defined _XBOX