Hallo Zusammen,
ich habe mal ein paar Fragen zu VBO und Indexbuffern in OpenGL.
Ich habe ein Terrain erstellt. Das habe ich in ein VBO geladen.
Dazu habe ich 2 Buffer generiert.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
buffers = new GLuint[2];
glGenBuffers(2, buffers);
glBindBuffer(GL_ARRAY_BUFFER, buffers[0]);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex3D) * vertexCount, NULL, GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Vertex3D) * vertexCount, heightData);
glVertexPointer(3, GL_FLOAT, sizeof(Vertex3D), BUFFER_OFFSET(0));
glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex3D), BUFFER_OFFSET(12));
glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex3D), BUFFER_OFFSET(20));
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[1]);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint) * vertexCount, indexBuffer, GL_STATIC_DRAW);
|
Danach habe ich ein Model geladen und wollte es auch in ein VBO laden.
Der Code sieht so aus wie oben.
Wenn ich das ganze dann zeichne, wird nur ein kleiner Teil des Terrain angezeigt.
Also habe ich den Indexbuffer vom Model wieder rausgenommen und es wird alles richtig gezeichnet.
Jetzt die Fragen:
1) Warum?
2) Gehören Indexbuffer und VBO nicht zusammen?
3) Wofür ist denn dann der Indexbuffer da?
4) Kann man den Indexbuffer nicht weglassen?
Gruß
Philipp