2009-05-05 19 views
3

Ich versuche OpenGL auf dem iPhone mit dem "Super Bible" zu lernen, habe aber Probleme bei der Portierung von OpenGL zu OpenGL ES. Mein Verständnis ist, dass die glRectf() Funktion in letzterem nicht verfügbar ist. Was ist der Ersatzansatz? Jede relevante konzeptionelle Information würde ebenfalls geschätzt werden.OpenGL zu OpenGL-ES - glRectf()

Antwort

9

Der Ersatzansatz ist es, einen Dreiecksstreifen zu ziehen:

GLfloat texture[] = 
{ 
    0, 0, 
    0, 1, 
    1, 0, 
    1, 1 
}; 

GLfloat model[] = 
{ 
    0, 0, // lower left 
    0, h, // upper left 
    w, 0, // lower right 
    w, h // upper right 
}; 

glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 

glVertexPointer(2, GL_FLOAT, 0, model); 
glTexCoordPointer(2, GL_FLOAT, 0, texture); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

Dies zeichnet ein Rechteck mit texturierten Breite und Höhe wh.

+0

+1 - Genau was ich gesagt hätte, wäre ich jetzt nicht zu faul, um den Code zu schreiben :) –

2

Anstatt ein Rect zu tun, machen Sie nur zwei Dreiecke.

Dies ist wirklich irrelevant, da GL-ES auf dem iPhone den Sofort-Modus nicht unterstützt. Sie müssen alle Ihre Scheitelpunkte in einem Array definieren und eine der Vertex-Array-Renderfunktionen verwenden, um sie zu zeichnen, anstatt die Funktionen des unmittelbaren Modus zu verwenden.

Verwandte Themen