Iphone OpenGL到OpenGL ES-更改条形图中三角形的颜色

Iphone OpenGL到OpenGL ES-更改条形图中三角形的颜色,iphone,opengl-es,Iphone,Opengl Es,在opengl中使用glBegin()和glEnd()时,您可以设置和更改每个glVertex3f()之间的颜色。使用顶点数组和glDrawArrays()时,如何重新创建此行为。这里是在普通的opengl中 for(angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI/8.0f)) { // Calculate x and y position of the next vertex x = 50.0f*sin(an

在opengl中使用glBegin()和glEnd()时,您可以设置和更改每个glVertex3f()之间的颜色。使用顶点数组和glDrawArrays()时,如何重新创建此行为。这里是在普通的opengl中

for(angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI/8.0f))
    {
    // Calculate x and y position of the next vertex
    x = 50.0f*sin(angle);
    y = 50.0f*cos(angle);

    // Alternate color between red and green
    if((iPivot %2) == 0)
        glColor3f(0.0f, 1.0f, 0.0f);
    else
        glColor3f(1.0f, 0.0f, 0.0f);

    // Increment pivot to change color next time
    iPivot++;

    // Specify the next vertex for the triangle fan
    glVertex2f(x, y);
    }
用于(角度=0.0f;角度<(2.0f*GL\u PI);角度+=(GL\u PI/8.0f))
{
//计算下一个顶点的x和y位置
x=50.0f*sin(角度);
y=50.0f*cos(角度);
//红色和绿色之间的交替颜色
如果((iPivot%2)==0)
GL3F(0.0f,1.0f,0.0f);
其他的
GL3F(1.0f,0.0f,0.0f);
//增加pivot以下次更改颜色
iPivot++;
//指定三角形风扇的下一个顶点
glVertex2f(x,y);
}

使用glDrawArrays,您必须启用GLVERTEPOINTER来设置顶点数据

同样,您也可以为颜色设置客户端内存指针

它归结为以下几点:

  glEnableClientState (GL_VERTEX_ARRAY);
  glEnableClientState (GL_COLOR_ARRAY); // enables the color-array.

  glVertexPointer (...  // set your vertex-coordinates here..
  glColorPointer (...   // set your color-coorinates here..

  glDrawArrays (... // draw your triangles

顺便说一句-纹理坐标的处理方式相同。只需使用GL_TEXCOORD_数组和glTexCoordPointer即可。

但颜色数组不会应用于所有三角形吗?我想给其他三角形涂上不同的颜色?红色和白色交替。您必须为每个顶点设置颜色。对于OpenGL | ES,只为其他三角形着色的功能已被删除,因为大多数应用程序不需要只为某些三角形着色。请记住,OpenGL | ES是OpenGL的精简版,删除了所有很少使用和不必要的内容。哦,我现在明白了。我误解了彩色阵列的工作原理。谢谢你的帮助。