gldrawarrays
我想知道和之间有什么区别gldrawelements
?另外,您会使用哪个以及何时使用?我的另一个问题是如何为 android 绘制一个球体。假设我在圆周上有 360 个点,这是否意味着我需要 360 * 360 的坐标作为球体?这似乎非常昂贵,必须有更好的方法。到目前为止,我能想到的唯一方法是嵌套 for 循环。但这将占用大量处理器时间。我能想到的另一种方法是绘制它并在一个方向上旋转 360 度。但它并不是一个真正的球体,只是一个旋转的圆圈。
1 回答
“我想知道 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
“我的另一个问题是如何为机器人画一个球体。”
你基本上只需要把它分解成三角形。一种简单的方法是使用纬度和经度对球体进行细分,就像地球上的线条一样。您可以使用带有 sin 和 cos 的循环来生成点。
Stack Overflow 上的这两个问题都有一些示例代码,应该可以直接适应 Android: