如何将数据,vec3和mat3绑定到具有Vulkan中设置的描述符的着色器?

时间:2017-07-26 05:44:57

标签: 3d glsl shader vulkan

我尝试将一些数据vec3和mat3绑定到带有Vulkan中描述符集的着色器。但数据变得错误。我必须使用vec4和mat4。着色器中的数据是正确的。为什么?

1 个答案:

答案 0 :(得分:-1)

这不是Vulkan特定的问题。这是一个GLSL问题。 为了优化代码(对齐等),编译器更喜欢处理128字节数据块。 因此,实际上不可能处理mat3。

但是,如果要使用数组vec3(例如在统一缓冲区中),可以在统一块中编写vec3 array[32];,但必须在CPU端对齐128个字节。所以,我建议你在CPU端使用类似的东西:

vec4 myVec3[32];并且您将它用作vec3,因为w坐标将永远不会在着色器中使用...

您可以获得更多信息: https://learnopengl.com/#!Advanced-OpenGL/Advanced-GLSL https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_uniform_buffer_object.txt