使用坐标数组在OpenGLES中绘制自定义形状

时间:2012-04-18 14:20:18

标签: opengl-es

现在,我在添加三角形或正方形等多边形时没有任何问题,但是当我尝试添加更复杂的东西时会出现问题。

这是我用于广场的内容:

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),我该如何绘制这个数字?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

根据您的坐标点列表,您需要生成三角网格和一组uv坐标(如果您确实需要它们)。一旦进行三角测量,您可以使用gldrawarrays

进行绘制

以下是一些可以帮助您的资源:

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

可能有助于紫外线生成的另一个问题: Calculating planar UV coordinates for arbitrary meshes

如果你使用的是桌面OpenGL而不是OpenGL ES,你可以使用GL_POLYGONS实际绘制而不进行三角测量......