现在,我在添加三角形或正方形等多边形时没有任何问题,但是当我尝试添加更复杂的东西时会出现问题。
这是我用于广场的内容:
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),我该如何绘制这个数字?
答案 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
实际绘制而不进行三角测量......