2017-03-09 121 views
0

我必须画出数以百万计的箭头。我拥有的信息如下。每个箭头方向上的每个箭头(矢量方向)opengl实例化绘图 - 3D箭头

  • 长度的

    • 的位置,如果每个箭头

    利用该信息,可予使用OpenGL实例化图绘制箭头。

    我已经通过实例化的例子了。在所有这些例子中,他们已经解释了每个实例的矩阵转换等。

    但是,我并不清楚,上述的数据,是否有可能做还是不做。

  • +0

    你可以。但你为什么想要?这听起来像你必须为每个箭头生成新的顶点/原语,这取决于你想如何呈现箭头。 –

    回答

    1

    假设箭头是一个向量,您可以将所有的矢量数据插入到一个统一的数组**中,并使用gl_InstanceID在顶点着色器中查找它们,并简单地将它们传递给gl_Position。

    如果您需要对箭头应用转换(通过查看数据:位置转换,方向旋转和长度缩放),您可以在单个顶点集上执行实例化绘图语句(您的基本箭头),使用统一的矩阵阵列进行转换,并在顶点着色器中以类似方式查看这些矩阵。

    **根据您有多少个实例,数据可能不适合统一数组。所以你可以看看使用Uniform块(它允许你存储更多的数据而不是简单的统一变量),如果这还不够,GL_TEXTURE_BUFFER可以解决这个问题。 不要让名称欺骗你,GL_TEXTURE_BUFFER可以保存任意数据,而不仅仅是纹理数据。

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

    支持纹理缓存,读出https://www.khronos.org/opengl/wiki/Buffer_Texture