如何在OpenGL ES 2中处理多个对象

框架91

对于OpenGL ES 2,有许多示例显示如何可视化单个三角形或矩形。

Google通过创建提供了一个绘制形状(三角形,矩形)示例TriangleRectangle该类基本上完成了可视化这些对象所需的所有opengl-stuff。

但是,如果您有多个三角形,该怎么办?如果您有对象,它由数百个不同颜色,不同大小和位置的三角形组成,该怎么办?我在opengl es中找不到任何用于处理复杂场景的好教程。


我的方法:

所以我尝试了一下。首先,我将-Class稍微更改Triangle为一个更动态的类(构造函数现在获取三角形的位置和颜色)。基本上,这对于绘制复杂场景是“足够的”。每个对象都由数百个这些类Triangle组成,我分别渲染它们。但这会消耗很多计算能力,我认为渲染过程中的大多数步骤都是多余的。

因此,我尝试将三角形“分组”为不同的类别。现在,每个对象都有其唯一的顶点缓冲区,并将每个三角形同时放入其中。现在的性能要比以前好得多(每个三角形都有自己的缓冲区),但我仍然认为,这不是正确的方法。

互联网上有没有很好的例子,有人在画的不仅仅是简单的三角形,还是您知道我从哪里可以得到这些信息?我真的很喜欢OpenGL,但是由于缺少教程(对于Android中的OpenGL ES 2),对于初学者来说很难。

用于渲染的(三角形)网格的标准表示方式是使用包含网格中所有顶点的顶点数组和连接存储连通性(三角形)的索引数组。您绝对希望每个对象最多进行一次绘制调用(但是您甚至可以合并多个对象)。

交错属性数组是最有效的wrt变体。缓存效率,因此每个对象一个VA的Buffer对象就足够了。您甚至可以将多个对象组合到一个缓冲区对象中,即使您不能对两个对象都使用单个绘制调用。

由于GLES可能限于16位索引,因此必须将大型模型拆分为多个“补丁”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在OpenGL ES 2.0中管理多个纹理?

来自分类Dev

如何在OpenGL ES 2中正确缩放

来自分类Dev

如何在OpenGL ES 2中使用顶点数组对象

来自分类Dev

如何在Android的OpenGL ES中渲染深度纹理

来自分类Dev

如何在Common Lisp中编写opengl ES 2.0 / 3.0?

来自分类Dev

如何在iOS OpenGL ES 2.0中画星

来自分类Dev

如何在 Android 的 OpenGL ES 2.0 中检查上传的纹理?

来自分类Dev

Android OpenGL ES 2:如何在主活动中将OpenGL活动用作片段

来自分类Dev

Android OpenGL ES 2:如何在主活动中将OpenGL活动用作片段

来自分类Dev

如何在OpenGL ES 1.1中处理索引缓冲区

来自分类Dev

如何在opengl es 2.0中的2D游戏中设置深度范围?

来自分类Dev

如何在openGL ES 2.0中执行2次传递以获得模糊效果

来自分类Dev

如何在OpenGL ES 2.0 for Android中加载3D对象?

来自分类Dev

如何在OpenGL ES 2.0中模拟累积缓冲区(跟踪粒子效果)

来自分类Dev

如何在OpenGl ES Xcode中以编程方式使用抗锯齿?

来自分类常见问题

OpenGL ES如何在着色器中设置布尔值

来自分类Dev

如何在OpenGL ES中的纹理上添加一些像素

来自分类Dev

如何在OpenGL ES 1.1中绕x和y旋转?

来自分类Dev

如何在OpenGL ES 2.0中使用可分离的滤镜着色器?

来自分类Dev

如何在OpenGL ES 2.0中将float数组传递给Shader?

来自分类Dev

如何在OpenGL ES中的纹理上添加一些像素

来自分类Dev

如何在OpenGL ES 2.0中将float数组传递给Shader?

来自分类Dev

如何在OpenGL中处理纹理动画?

来自分类Dev

在opengl es 2中如何释放纹理(ios硬崩溃)

来自分类Dev

如何在 Android 上将 OpenGL ES 1.0 代码转换为 OpenGL Es 2.0?

来自分类Dev

OpenGL ES移动对象

来自分类Dev

OpenGL ES移动对象

来自分类Dev

如何在Android上使用OpenGL ES扩展

来自分类Dev

如何在OpenGL中绘制视锥

Related 相关文章

  1. 1

    如何在OpenGL ES 2.0中管理多个纹理?

  2. 2

    如何在OpenGL ES 2中正确缩放

  3. 3

    如何在OpenGL ES 2中使用顶点数组对象

  4. 4

    如何在Android的OpenGL ES中渲染深度纹理

  5. 5

    如何在Common Lisp中编写opengl ES 2.0 / 3.0?

  6. 6

    如何在iOS OpenGL ES 2.0中画星

  7. 7

    如何在 Android 的 OpenGL ES 2.0 中检查上传的纹理?

  8. 8

    Android OpenGL ES 2:如何在主活动中将OpenGL活动用作片段

  9. 9

    Android OpenGL ES 2:如何在主活动中将OpenGL活动用作片段

  10. 10

    如何在OpenGL ES 1.1中处理索引缓冲区

  11. 11

    如何在opengl es 2.0中的2D游戏中设置深度范围?

  12. 12

    如何在openGL ES 2.0中执行2次传递以获得模糊效果

  13. 13

    如何在OpenGL ES 2.0 for Android中加载3D对象?

  14. 14

    如何在OpenGL ES 2.0中模拟累积缓冲区(跟踪粒子效果)

  15. 15

    如何在OpenGl ES Xcode中以编程方式使用抗锯齿?

  16. 16

    OpenGL ES如何在着色器中设置布尔值

  17. 17

    如何在OpenGL ES中的纹理上添加一些像素

  18. 18

    如何在OpenGL ES 1.1中绕x和y旋转?

  19. 19

    如何在OpenGL ES 2.0中使用可分离的滤镜着色器?

  20. 20

    如何在OpenGL ES 2.0中将float数组传递给Shader?

  21. 21

    如何在OpenGL ES中的纹理上添加一些像素

  22. 22

    如何在OpenGL ES 2.0中将float数组传递给Shader?

  23. 23

    如何在OpenGL中处理纹理动画?

  24. 24

    在opengl es 2中如何释放纹理(ios硬崩溃)

  25. 25

    如何在 Android 上将 OpenGL ES 1.0 代码转换为 OpenGL Es 2.0?

  26. 26

    OpenGL ES移动对象

  27. 27

    OpenGL ES移动对象

  28. 28

    如何在Android上使用OpenGL ES扩展

  29. 29

    如何在OpenGL中绘制视锥

热门标签

归档