Hello,
First, thanks to everyone for their help with my earlier posts. Much appreciated…
So, my current question has to do with replacing deprecated code.
I currently have a dirty mix of old and new stuff that goes like this:
/*
Somewhere in an initialize function
*/
glBindVertexArray(mVBONames[INDEX_VAO]);
// Create VBOs
glGenBuffers(VBO_COUNT - 1, mVBONames);
// Save vertex attributes into GPU
glBindBuffer(GL_ARRAY_BUFFER, mVBONames[VERTEX_VBO]);
glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * VERTEX_STRIDE * sizeof(float), lVertices, GL_STATIC_DRAW);
delete[] lVertices;
if (mHasNormal)
{
glBindBuffer(GL_ARRAY_BUFFER, mVBONames[NORMAL_VBO]);
glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * NORMAL_STRIDE * sizeof(float), lNormals, GL_STATIC_DRAW);
delete[] lNormals;
}
if (mHasUV)
{
glBindBuffer(GL_ARRAY_BUFFER, mVBONames[UV_VBO]);
glBufferData(GL_ARRAY_BUFFER, lPolygonVertexCount * UV_STRIDE * sizeof(float), lUVs, GL_STATIC_DRAW);
delete[] lUVs;
}
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mVBONames[INDEX_VBO]);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, lPolygonCount * TRIANGLE_VERTEX_COUNT * sizeof(unsigned int), lIndices, GL_STATIC_DRAW);
glBindVertexArray(0);
delete[] lIndices;
And when I am about to draw later in code
[...]
glPushMatrix();
glMultMatrixd((const double*)pGlobalPosition);
[...]
glGenVertexArrays(1, &mVBONames[INDEX_VAO]);
glBindVertexArray(mVBONames[INDEX_VAO]);
[...]
const GLsizei lElementCount = mSubMeshes[pMaterialIndex]->TriangleCount * 3;
glDrawElements(GL_TRIANGLES, lElementCount, GL_UNSIGNED_INT, reinterpret_cast<const GLvoid *>(lOffset));
[...]
glBindVertexArray(0);
[...]
glPopMatrix();
I really want to move to shaders and thus remove myself completely from the glPush-Pop stuff and the glMultMatrixd stuff but I am not exactly sure at the moment how.
It seems like I would just:
[ol]
[li]Create another array buffer[/li][li]send my global position into that array buffer[/li][li]multiply the buffered vertice data with the global position buffer in a shader[/li][li]and then go from there[/li][/ol]
But is that right?
I didn’t see an exact tutorial online or writeup on how to replace the glMultMatrixd functionality in shaders as I searched.
Any help is appreciated.
Thank you for your time.