GLfloat* Entity::getBuffer(unsigned int& size, int buffers) { GLfloat* tempBuffer; GLfloat* vertexTempBuffer = mesh->getVertexBuffer(); GLfloat* normalTempBuffer = getNormalBuffer(); tempBuffer = new GLfloat[24]; size = mesh->getNumVerticies(false) * (3 + 3) * sizeof(GLfloat); for(int i = 0; i < mesh->getNumVerticies(false); i++) { // Vertex Position tempBuffer[6 * i] = vertexTempBuffer[3 * i]; tempBuffer[6 * i + 1] = vertexTempBuffer[3 * i + 1]; tempBuffer[6 * i + 2] = vertexTempBuffer[3 * i + 2]; // Normal tempBuffer[6 * i + 3] = normalTempBuffer[3 * i]; tempBuffer[6 * i + 4] = normalTempBuffer[3 * i + 1]; tempBuffer[6 * i + 5] = normalTempBuffer[3 * i + 2]; } delete vertexTempBuffer, normalTempBuffer; return tempBuffer; }
void Mesh::glDraw() { //get vertex and normal buffers uint numVertices; const float *vertexBuffer = getVertexBuffer(numVertices); const float *normalBuffer = getNormalBuffer(numVertices); //draw arrays using openGL glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); if (vertexBuffer) glVertexPointer(3, GL_FLOAT, 0, vertexBuffer); if (normalBuffer) glNormalPointer(GL_FLOAT, 0, normalBuffer); glDrawArrays(GL_QUADS, 0, numVertices); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); }