我正在玩 OpenGL ES 2.0。如果我正在使用简单的 2D 投影,如果我有一个大的 2D 顶点网格,这些顶点几乎是静态的(想想地图图块),其中任何时候只有一小部分是可见的,那会更好。 ..
- 在 CPU 中计算出哪些顶点是可见的,然后创建一个 VBO 来仅绘制构成每一帧中可见图块的三角形?
或者
- 在整个平铺网格中保留一个静态 VBO,然后仅依靠显卡(在我的情况下为 RPi)来剪掉屏幕外的三角形?
或者也许是两者的某种组合(如重叠的预计算网格集)?在后一种选择变得不可行之前,网格必须有多大?
编辑 我决定多次调用 glDrawElements(),绘制我知道会与视口重叠的索引缓冲区的子范围。在我正在处理的规模上,即使在 Pi 零上,绘制整个元素数组的速度似乎也没有任何区别。
但是,如果涉及网格的任何旋转,这种方法将需要更多的计算来确定需要渲染哪些元素范围 - 有效地光栅化我自己的四边形。我很想知道这是否是一种合理的方法。
我猜还有其他一些选择,比如将飞机分解成子区域的更奇特的结构。不过,仍然不确定这是否真的有必要。
谢谢!
请注意:我不想讨论在片段着色器中绘制图块,我对使用顶点着色器的正确方法更感兴趣,而不是实际解决所描述的问题。