|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
|
glGenBuffers(1, &m_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*m_interpolatedFrame.vertices.size(), &m_interpolatedFrame.vertices[0], GL_DYNAMIC_DRAW);
glGenBuffers(1, &m_texCoordBuffer);
glBindBuffer(GL_ARRAY_BUFFER, m_texCoordBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*m_texCoords.size(), &m_texCoords[0], GL_STATIC_DRAW);
|
Matrizen transformieren...
Shader einlesen, compilieren usw...
Rendern:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
glVertexAttribPointer(GLint(0), 3, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, m_texCoordBuffer);
glVertexAttribPointer(GLint(1), 2, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, m_interpolatedFrame.vertices.size());
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(0);
|
Die Daten werden aus einer md2 Datei (ist nur für den Anfang) gelesen.
Und wieso in den Shader einlesen? Vergiss dieses a_Vertex und Co, das benutz ich nicht mehr. GLSL hat die Vertexdaten usw. in den Build-In Variablen gl_Vertex, gl_Normal usw. schon drin.
Das steht in meinem Buch als Pipeline:
Vertices and attribute data -> (Vertex transformation -> Lighting -> Texture coordinate generation) -> Clipping -> Rasterization -> (Texturing -> Color calculation) -> Fragment operations -> Framebuffer operations
Wobei die erste klammer durch den Vertex Shader und die zweite durch den Fragment Shader beeinflusst werden. Deswegen gehe ich mal davon aus das der Vertex Shader die Daten aus dem ersten Schritt zieht usw. usw.
Wahrscheinlich kannst du das eh. Aber warum interessiert dich wo ich die Daten herbekomme oder sie einlese? Schließlich wird doch eine (korrekte) Ausgabe erzeugt.