打开GL着色器存储缓冲区对象以替换顶点属性

时间:2016-06-13 08:04:09

标签: c++ opengl shader vertex-shader vertex-attributes

我基本上和在这里问过的人有同样的问题: Dynamically sized arrays in OpenGL ES vertex shader; used for blend shapes/morph targets。 特别是他最后一个没有答案的问题也困扰着我。

所以我也希望为每个网格I#处理使用任意数量的混合形状。目前,我使用固定数字并将形状视为顶点属性。这里的优点是我总是可以获得当前顶点的相关数据。现在,如果我想使用任意数量的形状,我想我会使用SSBO,因为他们的线索正是我想要的:动态大小的数据。 然而,据我所知,SSBO是静态的,并且对于着色器中的每个处理过的顶点,我都可以获得整个网格的混合形状数据。这意味着我必须引入某种计数器并尝试从每个顶点的SSBO中选择正确的数据。

这种理解是否正确? 我真的不确定这是否是最佳解决方案,也许你可以给我一些提示。

1 个答案:

答案 0 :(得分:1)

是的,你的理解是正确的。

您可以使用gl_VertexID或只是传递一些“顶点数”作为属性,以了解要为您正在处理的特定顶点加载SSBO的数据。