Ich habe eine große Textur Atlas und ich zeichne viele Texturen auf dem Bildschirm von diesem. Im Moment jede Textur aus dem Atlas wird separat mit Code wie folgt gezeichnet:Kombinieren Sie viele Texturatlas Aufrufe mit OpenGL ES
GLfloat coordinates[] = { bla, bla, bla, bla, bla, bla, bla, bla }; GLfloat vertices[] = { bla, bla, bla, bla, bla, bla bla, bla, bla bla, bla bla }; glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, name); glVertexPointer(3, GL_FLOAT, 0, vertices); glTexCoordPointer(2, GL_FLOAT, 0, coordinates); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
So sind wir dies mit einem Dreiecksstreifen zu tun.
Jetzt habe ich gerade versucht, diese Art von Calls zwischenzuspeichern, indem ich die Koordinaten/Scheitelpunkte speichere und alle in einem einzigen Aufruf zeichne. Aber OpenGL ES hat keine Quads. Wenn Sie also versuchen, Dreiecksstreifen zu verwenden, bedeutet dies, dass der Vorgang alle zusammenführt und Sie Texturen vom vorherigen Punkt über den Bildschirm ziehen.
Ich habe mit GlDrawArrays und GlDrawElements versucht, aber ich habe keinen Erfolg bekommen. Ist das überhaupt möglich?
Ja, das ist, was ich getan habe. Anstatt einen Dreiecksstreifen mit 4 Punkten in meinen Arrays zu definieren, habe ich zwei Dreiecke (6 Punkte) definiert und glDrawArrays (GL_TRIANGLES, 0, totalSize * 6) verwendet. Das verhindert, dass sich alles in einen riesigen Dreiecksstreifen verwandelt. –
Es gibt Leistungsvorteile, wenn die GL_TRIANGLE_STRIP-Version funktioniert. –