OpenGL ES 1.1 auf 2.0 eine große Veränderung?
Ich bin momentan dabei, eine iPhone-app mit cocos2d und ich bin versucht zu machen, verwenden Sie die folgenden OpenGL ES 1.1 code. Jedoch, ich bin nicht gut mit OpenGL und meine app nutzt OpenGL ES 2.0, also muss ich es konvertieren.
Damit ich wunderte mich, wie schwer kann es sein, konvertieren Sie den folgenden code aus ES-1.1 ES-2.0? Gibt es irgendeine Quelle, die mir sagen könnte, welche Methoden ersetzt werden müssen etc?
-(void) draw
{
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
glColor4ub(_color.r, _color.g, _color.b, _opacity);
glLineWidth(1.0f);
glEnable(GL_LINE_SMOOTH);
if (_opacity != 255)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//non-GL code here
if (_opacity != 255)
glBlendFunc(CC_BLEND_SRC, CC_BLEND_DST);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
}
- Reden wir ES oder desktop hier? Macht einen riesigen Unterschied. Im ersten Fall (reomve die opengl-tag) es wird nicht so einfach sein. In letzterem Fall entfernen Sie die LiveCycle es-tags) sollte es keine proting Probleme.
- Hi, es ist das iPhone, so ist es ES.
- Ah ja, muss overread, dass. In diesem Fall wird die Portierung nicht so einfach sein und Sie brauchen, um in GLSL-Shadern.
- O Gott... dieser Effekt buchstäblich brauchte ein paar Minuten, um die Umsetzung in Flash :/ danke für den Rat, werde ich probs haben sich alternative Methoden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird es nicht sein, dass einfach, wenn Sie nicht so fit in OpenGL.
OpenGL ES 2.0 nicht über eine fixed-function-pipeline mehr. Das heißt, Sie haben zu verwalten vertex-Transformationen, Beleuchtung, Texturen und die wie alle sich mit GLSL vertex-und fragment-Shader. Sie haben auch zu verfolgen, die transformation von Matrizen selbst, es gibt keine
glMatrixMode
,glPushMatrix
,glTranslate
, ... mehr.Gibt es auch keine buitlin vertex-Attribute mehr (wie
glVertex
,glColor
, ...). Damit diese Funktionen zusammen mit den entsprechenden array-Funktionen (wieglVertexPointer
,glColorPointer
, ...) undgl(En/Dis)ableClientState
wurden reomved, zu. Stattdessen müssen Sie den generischen vertex-Attribut-Funktionen (glVertexAttrib
,glVertexAttribPointer
undgl(En/Dis)ableVertexAttribArray
, die sich ähnlich Verhalten) zusammen mit einer entsprechenden vertex-shader zu geben, diese Attribute Ihre richtige Bedeutung.Ich schlage vor, Sie schauen in eine gute OpenGL-ES-2.0-tutorial oder Buch, wie die Portierung von 1.1 zu 2.0 ist wirklich eine große Veränderung, zumindest wenn Sie noch nie gehört haben, etwas über Shader.
glBegin/glEnd
, ...) und die API ist viel sauberer. Und findest du keine ernsthafte Anwendung nicht mit Shader sowieso (vielleicht heute, aber sicher nicht morgen).