如何正确地在OpenGL ES 2中绘制球体

时间:2013-08-12 22:49:17

标签: opengl-es-2.0

我想知道gldrawarraysgldrawelements之间的区别是什么?还有哪些你会用到什么时候?我的另一个问题是如何为android绘制球体。假设我在一个圆周上有360点,这是否意味着我需要一个球体的360 * 360坐标?这似乎非常昂贵,必须有一个更好的方法。到目前为止,我能想到的唯一方法是做嵌套for循环。但这将是如此多的处理器时间。我能想到的另一种方法是绘制它并在一个方向上旋转360度。但那时它并不是真正的球体,只是一个旋转的圆圈。

1 个答案:

答案 0 :(得分:3)

“我想知道gldrawarrays和gldrawelements之间的区别是什么?”

当您直接处理顶点流时使用glDrawArrays,并且在使用索引缓冲区时使用glDrawElements,这会添加额外的间接层并允许您通过索引号引用顶点。有关glDrawElements的更多信息,请查看此文章(免责声明:我撰写了文章):http://www.learnopengles.com/android-lesson-eight-an-introduction-to-index-buffer-objects-ibos/

OpenGL ES手册还提供了有关这两个功能的信息:

http://www.khronos.org/opengles/sdk/docs/man/xhtml/glDrawArrays.xml http://www.khronos.org/opengles/sdk/docs/man/xhtml/glDrawElements.xml

“我的另一个问题是如何为Android绘制球体。”

你基本上只需要将其分解为三角形。一种简单的方法是使用纬度和经度来测量球体,就像地球上的线条一样。您可以使用带有sin和cos的循环来生成点。

Stack Overflow上的这两个问题有一些示例代码可以直接适应Android: