2009-05-07 15 views
4

OpenGLでglBegin()およびglEnd()を使用すると、glVertex3f()の間で色を設定および変更できます。頂点配列とglDrawArrays()を使用しているときに、どのようにこの動作を再現できますか?ここは普通のopenglです。OpenGLからOpenGL-ES - ストリップ内の三角形の色を変更する

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); 
    } 

答えて

6

glDrawArraysでは、glVertexPointerを有効にして頂点データを設定する必要があります。

同じ方法で、色のクライアントメモリポインタを設定することもできます。

それは、これらの呼び出しに沸く:ところで

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_ARRAYとglTexCoordPointerを使用してください。

+0

ただし、color_arrayはすべての三角形に適用されませんか?私は他のすべての三角形を異なる色にしたいですか?赤と白の交互。 –

+0

各頂点の色を設定する必要があります。 OpenGL | ESでは他の三角形だけをカラーリングする機能が削除されています。ほとんどのアプリケーションでは、一部の三角形をカラーリングすることはありません。 OpenGL | ESは、まれに使用されているものと必須ではないものがすべて削除された状態で、OpenGLの抜き取られたバージョンです。 –

+0

ああ、私は今参照してください。カラー配列の仕組みを誤解していました。ご協力ありがとうございました。 –

関連する問題