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)
如果你不太适合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的移植确实是一个重大变化,至少如果您从未听说过着色器的话.
| 归档时间: |
|
| 查看次数: |
5404 次 |
| 最近记录: |