【问题标题】:How to draw circle on OpenGL ES 2.0 cross platform?如何在 OpenGL ES 2.0 跨平台上画圆?
【发布时间】:2013-07-18 16:41:41
【问题描述】:

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

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

【问题讨论】:

    标签: opengl-es-2.0 geometry


    【解决方案1】:

    OpenGL ES中画圆的常用方法有3种:

    1. 使用单个三角形扇形,其中第一个顶点位于圆的中心。您提供的点数越多,圆的质量就越高(镶嵌级别)。
    2. 使用包含圆形图像的纹理并将其映射到一对三角形(四边形)。
    3. 使用点精灵。

    【讨论】:

    • 谢谢,我尝试使用纹理坐标的第二种方法。我从 Brad Larsons 的答案中复制了顶点和片段着色器:stackoverflow.com/questions/11452729/… 但是圆圈只画在我的四边形的一个三角形中,有什么想法吗?
    • 您的顶点或纹理坐标可能存在错误。如果你用三角扇构建四边形,它应该如下所示: 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);
    • 谢谢,我的纹理坐标有问题,现在可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2012-01-21
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多