opengl instanced drawing - 3D Arrows

opengl instanced drawing - 3D Arrows

本文关键字:3D Arrows drawing instanced opengl      更新时间:2023-10-16

我必须绘制数百万箭头。我所拥有的信息如下。

  • 每个箭头的位置

  • 每个箭头的方向(向量方向)

  • 长度如果每个箭头

有了这些信息,我可以使用OpenGL Inthanced Drawing绘制箭头。

我已经完成了实例示例。在所有这些示例中,他们都解释了每个实例等的矩阵转换...。

但是,我尚不清楚上述数据,无论是否有可能。

鉴于箭头是向量,您只需将所有向量数据插入统一数组** **,然后使用gl_instanceid将它们查找在您的顶点着色器中,然后将它们传递给gl_position。

如果您需要将转换应用于箭头(通过查看数据:位置的转换,方向的旋转和长度的缩放),您将在一组顶点上发出当前的绘图语句(您的基本箭头),使用统一的矩阵进行转换,并以类似的方式在顶点着色器中查看这些矩阵。

**根据您的实例数量,数据可能不适合统一数组。因此,您可以考虑使用一个统一块(该块可以存储比简单统一变量更多的数据),如果这也不够,则GL_TEXTURE_BUFFER将可以解决问题。不要让这个名字欺骗您,gl_texture_buffer可以持有任意数据,而不仅仅是纹理数据。

统一块由https://www.khronos.org/opengl/wiki/uniform_buffer_object

对于纹理缓冲区,读出https://www.khronos.org/opengl/wiki/wiki/buffer_texture