#include <VBO.h>
Collaboration diagram for pge::VBO:
Public Member Functions | |
VBO (int vertexNum) | |
virtual | ~VBO (void) |
int | addVertex (Vector3f vertex, Vector3f normal, Vector2f texCoord) |
void | addTriangle (Triangle *triangle) |
void | buildVBO (void) |
void | renderVBO (int start, int length) |
Private Attributes | |
Vector3f * | m_vertexArrayBuffer |
Vector2f * | m_texCoordArrayBuffer |
Vector3f * | m_normalArrayBuffer |
unsigned int | m_vboVertexDescriptor |
unsigned int | m_vboTexCoordDescriptor |
unsigned int | m_vboNormalDescriptor |
unsigned int | m_vertexBufferSize |
unsigned int | m_texCoordBufferSize |
unsigned int | m_normalBufferSize |
unsigned int | m_vertexNum |
unsigned int | m_vertexBufferIndex |
|
Definition at line 22 of file VBO.h. References m_normalArrayBuffer, m_normalBufferSize, m_texCoordArrayBuffer, m_texCoordBufferSize, m_vboNormalDescriptor, m_vboTexCoordDescriptor, m_vboVertexDescriptor, m_vertexArrayBuffer, m_vertexBufferIndex, m_vertexBufferSize, and m_vertexNum.
00022 { 00023 m_vertexArrayBuffer = new Vector3f[vertexNum]; 00024 m_texCoordArrayBuffer = new Vector2f[vertexNum]; 00025 m_normalArrayBuffer = new Vector3f[vertexNum]; 00026 00027 m_vboVertexDescriptor = 0; 00028 m_vboTexCoordDescriptor = 0; 00029 m_vboNormalDescriptor = 0; 00030 00031 m_vertexBufferSize = 0; 00032 m_texCoordBufferSize = 0; 00033 m_normalBufferSize = 0; 00034 00035 m_vertexNum = vertexNum; 00036 m_vertexBufferIndex = 0; 00037 } |
|
Definition at line 43 of file VBO.h. References m_vboNormalDescriptor, m_vboTexCoordDescriptor, and m_vboVertexDescriptor.
00043 { 00044 unsigned int buffer[3] = {m_vboVertexDescriptor, m_vboTexCoordDescriptor, m_vboNormalDescriptor}; 00045 glDeleteBuffers(3, buffer); 00046 } |
|
Definition at line 73 of file VBO.h. References addVertex(), pge::Plane::m_normal, pge::Triangle::m_plane, pge::Triangle::m_texCoords, and pge::Triangle::m_vertices. Referenced by pge::SingleTexturedMesh::buildVBO().
00073 { 00074 if(triangle->m_plane == NULL) { 00075 printf("WARNING [%s]: Triangle without valid plane.", __FILE__); 00076 return; 00077 } 00078 addVertex(triangle->m_vertices[0], triangle->m_plane->m_normal, triangle->m_texCoords[0]); 00079 addVertex(triangle->m_vertices[1], triangle->m_plane->m_normal, triangle->m_texCoords[1]); 00080 addVertex(triangle->m_vertices[2], triangle->m_plane->m_normal, triangle->m_texCoords[2]); 00081 } |
Here is the call graph for this function:
|
Definition at line 52 of file VBO.h. References m_normalArrayBuffer, m_texCoordArrayBuffer, m_vertexArrayBuffer, and m_vertexBufferIndex. Referenced by addTriangle().
00052 { 00053 int result = m_vertexBufferIndex; 00054 00055 // Put vertex. 00056 m_vertexArrayBuffer[m_vertexBufferIndex] = vertex; 00057 00058 // Put normal. 00059 m_normalArrayBuffer[m_vertexBufferIndex] = normal; 00060 00061 // Put texCoord. 00062 m_texCoordArrayBuffer[m_vertexBufferIndex] = texCoord; 00063 00064 // Increment vertexBuferIndex but return old value. 00065 m_vertexBufferIndex += 1; 00066 return result; 00067 } |
|
Definition at line 87 of file VBO.h. References m_normalArrayBuffer, m_texCoordArrayBuffer, m_vboNormalDescriptor, m_vboTexCoordDescriptor, m_vboVertexDescriptor, m_vertexArrayBuffer, and m_vertexBufferIndex. Referenced by pge::SingleTexturedMesh::buildVBO().
00087 { 00088 // Vertex array. 00089 glGenBuffers(1, &m_vboVertexDescriptor); 00090 glBindBuffer(GL_ARRAY_BUFFER, m_vboVertexDescriptor); 00091 glBufferData(GL_ARRAY_BUFFER, m_vertexBufferIndex * 3 * sizeof(float), m_vertexArrayBuffer, GL_STATIC_DRAW); 00092 00093 // TexCoord array. 00094 glGenBuffers(1, &m_vboTexCoordDescriptor); 00095 glBindBuffer(GL_ARRAY_BUFFER, m_vboTexCoordDescriptor); 00096 glBufferData(GL_ARRAY_BUFFER, m_vertexBufferIndex * 2 * sizeof(float), m_texCoordArrayBuffer, GL_STATIC_DRAW); 00097 00098 // Normal array. 00099 glGenBuffers(1, &m_vboNormalDescriptor); 00100 glBindBuffer(GL_ARRAY_BUFFER, m_vboNormalDescriptor); 00101 glBufferData(GL_ARRAY_BUFFER, m_vertexBufferIndex * 3 * sizeof(float), m_normalArrayBuffer, GL_STATIC_DRAW); 00102 00103 delete [] m_vertexArrayBuffer; 00104 m_vertexArrayBuffer = NULL; 00105 00106 delete [] m_texCoordArrayBuffer; 00107 m_texCoordArrayBuffer = NULL; 00108 00109 delete [] m_normalArrayBuffer; 00110 m_normalArrayBuffer = NULL; 00111 } |
|
Definition at line 117 of file VBO.h. References m_vboNormalDescriptor, m_vboTexCoordDescriptor, and m_vboVertexDescriptor. Referenced by pge::SingleTexturedMesh::renderVBO().
00117 { 00118 glBindBuffer(GL_ARRAY_BUFFER, m_vboVertexDescriptor); 00119 glVertexPointer(3, GL_FLOAT, 0, (char*)NULL); 00120 00121 glBindBuffer(GL_ARRAY_BUFFER, m_vboTexCoordDescriptor); 00122 glTexCoordPointer(2, GL_FLOAT, 0, (char*)NULL); 00123 00124 glBindBuffer(GL_ARRAY_BUFFER, m_vboNormalDescriptor); 00125 glNormalPointer(GL_FLOAT, 0, (char*)NULL); 00126 00127 glEnableClientState(GL_VERTEX_ARRAY); 00128 glEnableClientState(GL_TEXTURE_COORD_ARRAY); 00129 glEnableClientState(GL_NORMAL_ARRAY); 00130 glDrawArrays(GL_TRIANGLES, start, length); 00131 glDisableClientState(GL_NORMAL_ARRAY); 00132 glDisableClientState(GL_TEXTURE_COORD_ARRAY); 00133 glDisableClientState(GL_VERTEX_ARRAY); 00134 } |
|
Definition at line 140 of file VBO.h. Referenced by addVertex(), buildVBO(), and VBO(). |
|
Definition at line 148 of file VBO.h. Referenced by VBO(). |
|
Definition at line 139 of file VBO.h. Referenced by addVertex(), buildVBO(), and VBO(). |
|
Definition at line 147 of file VBO.h. Referenced by VBO(). |
|
Definition at line 144 of file VBO.h. Referenced by buildVBO(), renderVBO(), VBO(), and ~VBO(). |
|
Definition at line 143 of file VBO.h. Referenced by buildVBO(), renderVBO(), VBO(), and ~VBO(). |
|
Definition at line 142 of file VBO.h. Referenced by buildVBO(), renderVBO(), VBO(), and ~VBO(). |
|
Definition at line 138 of file VBO.h. Referenced by addVertex(), buildVBO(), and VBO(). |
|
Definition at line 151 of file VBO.h. Referenced by addVertex(), buildVBO(), and VBO(). |
|
Definition at line 146 of file VBO.h. Referenced by VBO(). |
|
Definition at line 150 of file VBO.h. Referenced by VBO(). |