gpt4 book ai didi

OpenGL:如何在一次调用中绘制多条线带?

转载 作者:行者123 更新时间:2023-12-03 15:56:12 24 4
gpt4 key购买 nike

我想绘制多个不同长度的线带。
所有顶点都在一个公共(public)缓冲区中。

顺序如下所示:
v_1_1,v_1_2,v_1_3,v_2_1,v_2_2,v_3_1,..对于每个顶点v_i_j在哪里 i是 strip 的索引,j strip 中顶点的索引。

是否有可能使用索引缓冲区来指定该缓冲区中每个 strip 的开始和结束索引?

或者有什么其他方法可以解决这个问题?

最佳答案

在 OpenGL 中,与其他一些 API 相比,绘制调用开销并不高。问题是绘制调用之间状态变化的开销。因此,优化方面的主要目标应该是减少不同绘制调用之间所需的状态更改次数(尤其是昂贵的状态更改次数)。

但绘制调用并非完全没有成本,而且放弃免费性能是没有意义的,所以使用 primitive restart index.基本上,您所做的是指定一个索引(通常是索引类型的最大索引。16 位索引将使用 0xFFFF)来引用,而不是索引,而是重新启动原语的意图。所以在你的例子中,你会这样做:

v_1_1, v_1_2, v_1_3, 0xFFFF, v_2_1, v_2_2, 0xFFFF, v_3_1,..

您将重新启动索引放在 strip 之间。

原语重启有两种形式:用户定义索引和固定索引。用户自定义索引版本允许你指定什么索引代表“重启”;固定索引始终使用最大索引。

尽管固定索引重启需要更高的 GL 版本(4.3 而不是 3.1),但固定索引版本实际上在所有 GPU 硬件中更通用。例如,OpenGL ES 没有非固定版本,Vulkan 也没有。仅使用最大索引并没有真正的缺点。因此,即使实现不支持固定的重启索引,您也应该始终使用最大索引作为用户定义的重启索引。

关于OpenGL:如何在一次调用中绘制多条线带?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57339334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com