2013-07-18 42 views
0

过去两周我一直在教自己编程openGL ES 2.0,但是我正在努力绘制某些对象。我正在使用Mosync来编写代码,因为我可以为所有平台编程。到目前为止,我已经写了一个程序来绘制一个三角形,另一个绘制一个正方形。我正在寻找一种绘制圆的方法,我知道我已经确定了中心,半径,角度和分辨率,但是我不知道如何去实现它的工作。如何在OpenGL ES 2.0跨平台上画圈?

我可以直接从draw()绘制圆吗?还是必须定义正方形的顶点并使用片段着色器仅将像素着色为圆形?

回答

0

有3层常见的方法来画一个圆在OpenGL ES:

  1. 使用一个单一的三角形扇,其中第一个顶点是在你的圆心。您提供的点越多,圆的质量就越高(曲面细分级别)。
  2. 使用包含圆形图像的纹理并将其映射到一对三角形(四边形)。
  3. 使用点精灵。
+0

谢谢,我试着用第二种方法使用纹理坐标。我从Brad Larsons的答案中复制了顶点和片段着色器: http://stackoverflow.com/questions/11452729/how-do-i-draw-a-filled-circle-with-opengl-es-on- iphone?answertab = votes#tab-top 但是,这个圆只是绘制在我的四边形的任意一个三角形上,有什么想法? –

+0

您的顶点或纹理坐标可能存在错误。如果使用三角形风扇构建四边形,它应该如下所示:GLfloat Positions [] = {-1.0f,-1.0f,1.0f,-1.0f,1.0f,1.0f,-1.0f,1.0f, }; GLFloat TexCoords [] = {0.0f,1.0f,1.0f,1.0f,1.0f,0.0f,0.0f,0.0f}; glDrawArrays(GL_TRIANGLE_FAN,0,4); – ClayMontgomery

+0

谢谢,这是我的纹理坐标问题,现在工作正常。 –