具有单个顶点/索引缓冲区的多个绘制调用?

时间:2019-10-09 00:42:17

标签: opengl-es vertex-buffer

我想实现简单的项目符号跟踪(在OpenGL-ES 2-3中),该系统将允许对不同的跟踪使用不同的纹理或材质,因此这意味着该跟踪应在不同的绘制调用和每个顶点中进行渲染可以在渲染之前进行修改。

实际上,我不知道每次更新将完成多少次绘制调用,以及将多少个顶点传递给此绘制调用,因此我尝试对所有路径使用单个顶点缓冲区和单个索引缓冲区,并在每帧用不同的尾迹数据填充顶点缓冲区。索引缓冲区一次填充了简单的(0、1、2、3、3、4、4、5、6 ...)值,以后将不再更改。

您能否提出一些最佳做法,该如何做?是否可以为每个批次使用不同的渲染状态和不同的顶点区域进行绘制调用?每个抽奖电话应使用哪些索引区域?必须使用索引偏移量考虑顶点偏移量,还是必须将索引应用于顶点区域而不是整个缓冲区,所以我可以为每个绘制调用将索引缓冲区偏移量设置为0?或者,也许我完全错了,应该做些其他事情?

谢谢!

1 个答案:

答案 0 :(得分:0)

好,那么我是如何工作的:

  1. 我仍对所有批次使用单个大缓冲区

  2. 对于每个批次,我仅映射缓冲区的一部分(每个批次的新部分),并更改该部分中的数据。

  3. 索引必须考虑该部分的偏移量。因此,当您使用第4、5、6、7个顶点渲染缓冲区的一部分时,必须使用{4、5、6、7}数据的索引缓冲区的一部分。