OpenGL ES 1.1到2.0有哪些重大变化?

FBr*_*t87 5 xcode opengl-es cocos2d-iphone opengl-es-2.0

我正在使用cocos2d创建一个iPhone应用程序,我正在尝试使用以下OpenGL ES 1.1代码.但是,我不熟悉OpenGL,我的应用程序使用OpenGL ES 2.0,所以我需要转换它.

因此我想知道,将以下代码从ES 1.1转换为ES 2.0有多难?是否有一些来源可以告诉我哪些方法需要更换等?

-(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);
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ica 9

如果你不太适合OpenGL,那就不那么容易了.

OpenGL ES 2.0不再具有固定功能管道.这意味着您必须使用GLSL顶点和片段着色器自己管理顶点变换,光照,纹理等.您还可以跟踪的变换矩阵自己,有没有glMatrixMode,glPushMatrix,glTranslate,...了.

还有没有buitlin顶点属性了(像glVertex,glColor...).所以这些功能,与相应的阵列功能(如沿glVertexPointer,glColorPointer......),并gl(En/Dis)ableClientState已reomved了.相反,你需要的通用顶点属性的功能(glVertexAttrib,glVertexAttribPointer并且gl(En/Dis)ableVertexAttribArray,它的行为类似)连同相应的顶点着色器给这些属性的正确含义.

我建议您查看一个很好的OpenGL ES 2.0教程或书籍,因为从1.1到2.0的移植确实是一个重大变化,至少如果您从未听说过着色器的话.