PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenGL (ES 2) - glDrawElements


Ganon
2011-03-03, 15:30:33
Hallo.

Ich hab mal ne Frage dazu. Bei mir will glDrawElements irgendwie nicht das machen, was ich ihm sage :D Vllt. hat jemand einen Tipp? Muss man da vllt. irgendwas beachten? Die Daten wie sie da sind, funktionieren in einem anderen "normalen" OpenGL Programm problemlos.

Und zwar folgender Code-Ausschnitt:


GLuint positionSlot = glGetAttribLocation(glsl_program, "Position");
glEnableVertexAttribArray(positionSlot);
glVertexAttribPointer(positionSlot, 3, GL_FLOAT, GL_FALSE, 0, modelLoader->vertices[0].Pointer());
glDrawArrays(GL_POINTS, 0, modelLoader->VertexCount());

GLsizei faceCount = modelLoader->FaceCount();
glDrawElements(GL_TRIANGLES, faceCount, GL_UNSIGNED_SHORT, modelLoader->faces[0].Pointer());

glDisableVertexAttribArray(positionSlot);


Die GL_POINTS werden hier zur Kontrolle korrekt gerendert. Wenn ich jetzt nur die ganzen Dreiecke rendern möchte kommt nur Mist bei raus. Die Daten dazu lese ich aus einer .3ds-Datei. Nach dem Einlesen kommt dann das bei raus:



v -269.571, -100, -100
v -269.571, -100, -100
v -269.571, -100, -100
v -269.571, -100, -100
v -113.32, -100, 10.2184
v -113.32, -100, 10.2184
v -113.32, -100, 10.2184
v 100, -100, -100
v 100, -100, -100
v 100, -100, -100
v 91.0214, -100, 100
v 91.0214, -100, 100
v 100, 100, -100
v 100, 100, -100
v 100, 100, -100
v 91.0214, 100, 100
v 91.0214, 100, 100
v -269.571, 100, -100
v -269.571, 100, -100
v -269.571, 100, -100
v -269.571, 100, -100
v -113.32, 100, 10.5038
v -113.32, 100, 10.5038
v -113.32, 100, 10.5038
v -113.316, -98.96, 100
v -113.316, -98.96, 100
v -113.316, -98.96, 100
v -113.189, 99.9994, 100
v -113.189, 99.9994, 100
v -113.189, 99.9994, 100
v -269.571, -99.6589, 10.5289
v -269.571, -99.6589, 10.5289
v -269.571, -99.6589, 10.5289
v -269.571, -99.6589, 10.5289
v -269.571, 99.9714, 10.1819
v -269.571, 99.9714, 10.1819
v -269.571, 99.9714, 10.1819
v -269.571, 99.9714, 10.1819
v 100, -100, 0
v 100, -100, 0
v 91.0214, 0, 100
v 100, 100, 0
v 100, 100, 0
v 100, 0, -100
v 100, 0, -100
v 100, 0, -20.2218
v 100, -100, 90.7371
v 100, -100, 90.7371
v 100, -100, -50
v 100, -100, -50
v 100, -50, -20.2218
v 100, -50, -20.2218
v 100, 0, -28.9623
v 100, -50, -100
v 100, -50, -100
v 100, -50, -100
v 100, -50, -100
v 91.0214, -50, 100
v 100, 0, 90.7371
v 91.0214, 50, 100
v 100, 100, 90.7371
v 100, 100, 90.7371
v 100, 50, -20.2218
v 100, 50, -20.2218
v 100, 100, -50
v 100, 100, -50
v 100, 50, -100
v 100, 50, -100
v 100, 50, -100
v 100, 50, -100
v 100, -50, -28.9623
v 100, -50, -28.9623
v 100, -50, -28.9623
v 100, -50, -28.9623
v 100, -50, 90.7371
v 100, 50, 90.7371
v 100, 50, -28.9623
v 100, 50, -28.9623
v 100, 50, -28.9623
v 100, 50, -28.9623
v 95, 0, -100
v 95, 0, -100
v 95, 0, -28.9623
v 95, 0, -28.9623
v 95, -50, -100
v 95, -50, -100
v 95, -50, -100
v 95, 50, -100
v 95, 50, -100
v 95, 50, -100
v 95, -50, -28.9623
v 95, -50, -28.9623
v 95, -50, -28.9623
v 95, 50, -28.9623
v 95, 50, -28.9623
v 95, 50, -28.9623
v 152.779, 0, -20.2218
v 152.779, -50, -20.2218
v 152.779, -50, -20.2218
v 152.779, 0, -28.9623
v 152.779, 0, -28.9623
v 152.779, 50, -20.2218
v 152.779, 50, -20.2218
v 152.779, -50, -28.9623
v 152.779, -50, -28.9623
v 152.779, -50, -28.9623
v 152.779, 50, -28.9623
v 152.779, 50, -28.9623
v 152.779, 50, -28.9623
v -269.394, -18.6471, -100
v -269.394, -18.6471, -100
v -269.394, -18.6471, -100
v -269.394, -18.6471, -100
v -269.394, 100, -100
v -269.394, 100, -100
v -269.394, 100, -100
v -269.394, 100, -100
v -269.394, -18.306, 10.5289
v -269.394, -18.306, 10.5289
v -269.394, -18.306, 10.5289
v -269.394, -18.306, 10.5289
v -269.394, 99.9714, 10.1819
v -269.394, 99.9714, 10.1819
v -269.394, 99.9714, 10.1819
v -269.394, 99.9714, 10.1819
v -421.387, -18.6471, -100
v -421.387, -18.6471, -100
v -421.387, -18.6471, -100
v -421.387, 100, -100
v -421.387, 100, -100
v -421.387, 100, -100
v -421.387, -18.306, 10.5289
v -421.387, -18.306, 10.5289
v -421.387, -18.306, 10.5289
v -421.387, 99.9714, 10.1819
v -421.387, 99.9714, 10.1819
v -421.387, 99.9714, 10.1819
f 4, 47, 10
f 4, 39, 47
f 2, 49, 39
f 2, 9, 49
f 4, 2, 39
f 73, 48, 8
f 56, 73, 8
f 50, 38, 48
f 73, 50, 48
f 96, 97, 105
f 100, 96, 105
f 83, 92, 86
f 81, 83, 86
f 74, 46, 38
f 50, 74, 38
f 57, 11, 46
f 74, 57, 46
f 40, 57, 74
f 58, 40, 74
f 58, 74, 50
f 45, 58, 50
f 75, 58, 45
f 63, 75, 45
f 59, 40, 58
f 75, 59, 58
f 15, 59, 75
f 61, 15, 75
f 61, 75, 63
f 42, 61, 63
f 95, 83, 81
f 89, 95, 81
f 102, 96, 100
f 108, 102, 100
f 42, 63, 79
f 65, 42, 79
f 65, 79, 69
f 14, 65, 69
f 20, 64, 13
f 20, 41, 64
f 23, 60, 41
f 23, 16, 60
f 20, 23, 41
f 37, 23, 20
f 24, 22, 6
f 3, 55, 7
f 3, 44, 55
f 19, 68, 44
f 19, 12, 68
f 3, 19, 44
f 29, 16, 23
f 25, 59, 15
f 25, 40, 59
f 25, 57, 40
f 25, 11, 57
f 26, 4, 10
f 28, 25, 15
f 27, 22, 24
f 32, 5, 21
f 33, 2, 4
f 133, 130, 127
f 36, 32, 21
f 136, 130, 133
f 91, 72, 54
f 85, 91, 54
f 82, 52, 70
f 90, 82, 70
f 84, 53, 43
f 80, 84, 43
f 94, 76, 52
f 82, 94, 52
f 88, 67, 78
f 93, 88, 78
f 80, 43, 66
f 87, 80, 66
f 98, 51, 71
f 104, 98, 71
f 96, 45, 50
f 97, 96, 50
f 103, 70, 52
f 99, 103, 52
f 102, 63, 45
f 96, 102, 45
f 107, 77, 62
f 101, 107, 62
f 99, 52, 76
f 106, 99, 76
f 116, 18, 1
f 112, 116, 1
f 111, 0, 31
f 120, 111, 31
f 124, 35, 17
f 115, 124, 17
f 119, 30, 34
f 123, 119, 34
f 129, 114, 110
f 126, 129, 110
f 125, 109, 118
f 132, 125, 118
f 135, 122, 113
f 128, 135, 113
f 131, 117, 121
f 134, 131, 121



http://xenon.42degreesoffreedom.com/~matti/OLESFehler.png

Xmas
2011-03-03, 18:49:47
Ist das wirklich "nur Mist" oder lediglich ein Teil der Geometrie? Was du willst ist wahrscheinlich glDrawElements(GL_TRIANGLES, faceCount * 3, ...), da hier nicht die Zahl der Dreiecke sondern die Zahl der zu verwendenden Vertices/Indices gefragt ist.

Ganon
2011-03-03, 23:53:16
Ah super, daran lag es :) Ist dann in dem Buch hier etwas missverständlich geschrieben. Vielen Dank.