mac*_*osh 3 drawing 2d opengl-es ios opengl-es-2.0
我正在学习如何在iOS上使用OpenGL ES 2.0.现在我想做一些基本的2D动画(例如在屏幕周围移动一个矩形并改变它的大小).我已经开始使用Apple在Xcode中提供的OpenGL ES项目模板.我的绘图代码如下所示:
static GLfloat squareVertices[] = {
-0.5f, -0.33f,
0.5f, -0.33f,
-0.5f, 0.33f,
0.5f, 0.33f
};
// Update attribute values.
glVertexAttribPointer(VERTEX_ATTR, 2, GL_FLOAT, 0, 0, squareVertices);
glEnableVertexAttribArray(VERTEX_ATTR);
glVertexAttribPointer(COLOR_ATTR, 4, GL_UNSIGNED_BYTE, 1, 0, squareColors);
glEnableVertexAttribArray(COLOR_ATTR);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 5);
Run Code Online (Sandbox Code Playgroud)
现在,这将在屏幕中间绘制一个漂亮的矩形.但是,如果我通过添加以下代码开始更改矩形,它开始看起来很时髦:
squareVertices[5] -= .001;
squareVertices[7] -= .001;
Run Code Online (Sandbox Code Playgroud)
就好像矩形的一部分连接到屏幕的中心.我是OpenGL ES的新手,所以我确信我的问题很明显.我还假设这与OpenGL ES是3D图形库有关,我试图把它当作2D空间.所以我的问题是:在OpenGL ES 2.0中绘制和动画2D对象的最佳方法是什么?我在网上看过OpenGL ES 1.1的一些东西,但这对我没什么帮助.他们是在OpenGL ES 2.0中进行2D绘图的特殊技术,还是有某种2D绘图模式?
任何指导将不胜感激.
@macinjosh:这是对您对答案感兴趣的人的更新问题的回复.我猜你自从2010年12月发布以来已经获得了进一步的知识!
OpenGL顶点是3D,而不是2D.为了完全真实,它们实际上是4D,因为它们也包含'w'组件,但是现在只需将其视为值为1.0的同源向量.
由于它们的3D-ness,除非在着色器中添加"z"组件,否则必须指定一个作为顶点属性.