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

给定坐标点列表,您需要生成三角网格和一组 uv 坐标(如果您真的需要它们)。三角化后,您可以使用gldrawarrays

以下是一些可能对您有所帮助的资源:

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

另一个可能有助于生成 UV 的问题: 计算任意网格的平面 UV 坐标

如果您使用的是桌面 OpenGL 而不是 OpenGL ES,您实际上可以在没有三角测量的情况下使用GL_POLYGONS...

于 2012-04-18T14:48:44.757 回答
1

您必须将形状转换为三角形列表。

于 2012-04-18T14:21:37.087 回答