0

今のところ、三角形や正方形などのポリゴンを追加するのに問題はありませんが、もっと複雑なものを追加しようとすると問題が発生します。

これは私が正方形に使用するものです:

GLfloat squareVertices[] = {
        50, 50,
        150, 50,
        50, 150,
        150, 150
    };
    GLfloat squareTexture[] = {
        0, 0,
        1, 0,
        0, 1,
        1, 1
    };


    glColor4f( 1, 0, 0, 1 );

    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
    glEnable(GL_BLEND);
    glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA );


    glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, 0, squareVertices);
    glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, 0, squareTexture

それは完璧に機能しますが、任意の数のポイントはどうですか?

たとえば、次の点を持つL字型があるとします。

0,0         10,0






            10,80                     100,80

0,100       10,100                    100,100

これはLです(座標を結ぶ線を確認してみてください)

私の質問は、これらの7つのポイント(または8、または100)を考えると、どのように図を描くことができますか?

4

2 に答える 2

1

形状を三角形のリストに変換する必要があります。

于 2012-04-18T14:21:37.087 に答える
1

座標点のリストを指定すると、三角形分割されたメッシュと一連のuv座標(本当に必要な場合)の両方を生成する必要があります。三角測量されたら、gldrawarrays

これがあなたを助けるかもしれないいくつかのリソースです:

三角測量 http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html

UV生成に役立つ可能性のある別の質問: 任意のメッシュの平面UV座標の計算

OpenGL ESの代わりにデスクトップOpenGLを使用している場合は、GL_POLYGONS...を使用して三角測量せずに実際に描画できます。

于 2012-04-18T14:48:44.757 に答える