void triangle(void) { gl_UniformMatrix4fv (fgProjectionMatrixIndex, 1, GL_FALSE, projectionMatrix); gl_BindBuffer (GL_ARRAY_BUFFER, vertexBufferName); gl_VertexAttribPointer (fgColorIndex, numColorComponents, GL_FLOAT, GL_FALSE, stride, bufferObjectPtr (0)); gl_VertexAttribPointer (fgVertexIndex, numVertexComponents, GL_FLOAT, GL_FALSE, stride, bufferObjectPtr (sizeof(GLfloat) * numColorComponents)); glDrawArrays(GL_TRIANGLES, 0, numElements); checkError ("triangle"); }
void setAttribPointers(void) { glEnableVertexAttribArray(shader_map1["vNorm"]); //glEnableVertexAttribArray(shader_map1["vColor"]); //glEnableVertexAttribArray(shader_map1["vTex"]); glEnableVertexAttribArray(shader_map1["vPos"]); // bind the desired VertBufObj glBindBuffer(GL_ARRAY_BUFFER, vertBufObj); // tell OpenGL organization of vertArray and connect to GLSL variable glVertexAttribPointer(shader_map1["vNorm"], numNormalComponents, GL_FLOAT, GL_FALSE, stride, bufferObjectPtr(0)); glVertexAttribPointer(shader_map1["vPos"], numVertexComponents, GL_FLOAT, GL_FALSE, stride, bufferObjectPtr(sizeof(GLfloat) * numNormalComponents)); checkError("setAttribPointers"); }
void triangle(void) { const GLvoid * i = bufferObjectPtr(0); glUniformMatrix4fv(fgProjectionMatrixIndex, 1, GL_FALSE, &projectionMatrix[0][0]); glUniformMatrix4fv(fgModelViewMatrixIndex, 1, GL_FALSE, &modelviewMatrix[0][0]); glUniform4fv(fgLightPositionIndex, 1, &lightPosition[0]); glBindBuffer(GL_ARRAY_BUFFER, vertexBufferName); glVertexAttribPointer(fgNormalIndex, numNormalComponents, GL_FLOAT, GL_FALSE, stride, bufferObjectPtr(0)); glVertexAttribPointer(fgVertexIndex, numVertexComponents, GL_FLOAT, GL_FALSE, stride, bufferObjectPtr(sizeof (GLfloat) * numNormalComponents)); glDrawArrays(GL_TRIANGLES, 0, numElements); checkError("triangle"); }
void MeshObj::setAttribPointers(void) { glEnableVertexAttribArray((*shader)["vNorm"]); glBindBuffer(GL_ARRAY_BUFFER, normBufObj); glVertexAttribPointer((*shader)["vNorm"], DIM3, GL_FLOAT, GL_FALSE, sizeof(glm::vec3), bufferObjectPtr(0)); #if 1 if (0 != texArrObj.size()) { glEnableVertexAttribArray((*shader)["vTex"]); glBindBuffer(GL_ARRAY_BUFFER, texBufObj); glVertexAttribPointer((*shader)["vTex"], DIM2, GL_FLOAT, GL_FALSE, sizeof(glm::vec2), bufferObjectPtr(0)); } #endif glEnableVertexAttribArray((*shader)["vPos"]); glBindBuffer(GL_ARRAY_BUFFER, vertBufObj); glVertexAttribPointer((*shader)["vPos"], DIM3, GL_FLOAT, GL_FALSE, sizeof(glm::vec3), bufferObjectPtr(0)); checkError("MeshObj::setAttribPointers"); } // end setAttribPointers
void MeshObj::render(GLenum mode) { setAttribPointers(); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, idxBufObj); // render the vertices to screen as triangles // glDrawArrays(mode, first, count); //glDrawArrays(mode, 0, vertArrObj.size()); // glDrawElements(mode, count, type, idxPtr); glDrawElements(mode, idxArrObj.size(), GL_UNSIGNED_INT, bufferObjectPtr(0)); disableBufObjs(); checkError("MeshObj::render"); } // end render