对于OpenGL ES 2,有许多示例显示如何可视化单个三角形或矩形。
Google通过创建和类提供了一个绘制形状(三角形,矩形)的示例Triangle
,Rectangle
该类基本上完成了可视化这些对象所需的所有opengl-stuff。
但是,如果您有多个三角形,该怎么办?如果您有对象,它由数百个不同颜色,不同大小和位置的三角形组成,该怎么办?我在opengl es中找不到任何用于处理复杂场景的好教程。
所以我尝试了一下。首先,我将-Class稍微更改Triangle
为一个更动态的类(构造函数现在获取三角形的位置和颜色)。基本上,这对于绘制复杂场景是“足够的”。每个对象都由数百个这些类Triangle
组成,我分别渲染它们。但这会消耗很多计算能力,我认为渲染过程中的大多数步骤都是多余的。
因此,我尝试将三角形“分组”为不同的类别。现在,每个对象都有其唯一的顶点缓冲区,并将每个三角形同时放入其中。现在的性能要比以前好得多(每个三角形都有自己的缓冲区),但我仍然认为,这不是正确的方法。
互联网上有没有很好的例子,有人在画的不仅仅是简单的三角形,还是您知道我从哪里可以得到这些信息?我真的很喜欢OpenGL,但是由于缺少教程(对于Android中的OpenGL ES 2),对于初学者来说很难。
用于渲染的(三角形)网格的标准表示方式是使用包含网格中所有顶点的顶点数组和连接存储连通性(三角形)的索引数组。您绝对希望每个对象最多进行一次绘制调用(但是您甚至可以合并多个对象)。
交错属性数组是最有效的wrt变体。缓存效率,因此每个对象一个VA的Buffer对象就足够了。您甚至可以将多个对象组合到一个缓冲区对象中,即使您不能对两个对象都使用单个绘制调用。
由于GLES可能限于16位索引,因此必须将大型模型拆分为多个“补丁”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句