Ich habe versucht, einen Würfel zu rendern und eine einzige Textur auf allen Flächen anwenden. sowie so wenig Vertices wie ich kann, indem ich Indexe der Scheitelpunkte des Gesichts verlasse. Beispiel:GLES20 Warum Texturdaten nicht mit Vertices-Indizes verknüpft sind?
Vertices:
static final float FACE_VERTEX[] = {
// front
0.0f, 1.0f, 1.0f, //0
0.0f, 0.0f, 1.0f, //1
1.0f, 0.0f, 1.0f, //2
1.0f, 1.0f, 1.0f, //3
//back
1.0f, 1.0f, 0.0f, //4 - 3
1.0f, 0.0f, 0.0f, //5 - 2
0.0f, 0.0f, 0.0f, //6 - 1
0.0f, 1.0f, 0.0f, //7 - 0
};
Indizes:
static final int FACE_INDEX[] = {
//front
0,1,2, 0,2,3,
//back
4,5,6, 4,6,7,
//left
7,6,1, 7,1,0,
//right
3,2,5, 3,5,4,
//top
4,7,0, 4,0,3,
//bottom
1,6,5, 1,5,2
};
Texturabbildungsdaten:
final int textureCoordinateData[] =
{
// Front face
0,0, 0,1, 1,1, 1,0,
//back
0,0, 0,1, 1,1, 1,0,
//left
0,0, 0,1, 1,1, 1,0,
//right
0,0, 0,1, 1,1, 1,0,
//top
0,0, 0,1, 1,1, 1,0,
//bottom
0,0, 0,1, 1,1, 1,0,
//top
0,0, 0,1, 1,1, 1,0,
//bottom
0,0, 0,1, 1,1, 1,0,
};
Die Textur auf allen Seiten des Würfels wiedergegeben wird, mit der Ausnahme oberen und unteren .
I VBOs bin mit den Scheitelpunkt/index/Texturdaten in der GPU zu speichern: nur die erste Zeile der Bildpunkte der Vorderfläche ist entlang der gesamten oberen und unteren Flächen (siehe Abbildung) gerendert und dieses Problem jedoch mit
glDrawElements(GL_TRIANGLES, indexLength, GL_UNSIGNED_INT, 0);
Rendering ist, weil die Texturdaten zu den übergebenen Vertex-Daten zugeordnet werden (was für ein Würfelmodell ein bisschen nervig ist) und wird nicht durch den Index berechnet.
Meine Fragen werden sein: - Gibt es eine Möglichkeit, die Daten der Scheitelpunkte so niedrig wie möglich zu halten und die Textur den Indexdaten zuzuordnen? - Wenn ich 36 Vertices (einige werden wiederholt) zur Lösung der Textur Mapping-Problem, aber ich habe die richtigen Indizes erstellt, um den Würfel zu rendern, wäre es immer noch schneller als mit glDrawArrays
? Oder soll ich mit glDrawArrays
gehen und die Indizierung Daten sowieso trash?
damit verbundene Frage (die nicht meine Frage beantworten):
OpenGL ES - texture map all faces of an 8 vertex cube?
Wenn Sie den ersten Kommentar über die Antwort lauten:
Was meinen Sie damit Sie 24 verwenden müssen Eckpunkte? Wenn Sie die Scheitelpunkte duplizieren müssen, was ist der Punkt der Verwendung eines Indexpuffers dann, wenn Sie immer noch Daten an die GPU senden?