小编Ryo*_*oku的帖子

Vulkan 专业化常量数组

可以有一个专门化常量数组,这样 glsl 代码看起来类似于以下内容:

layout(constant_id = 0) const vec2 arr[2] = vec2[] (
    vec2(2.0f, 2.0f),
    vec2(4.0f, 4.0f)
);
Run Code Online (Sandbox Code Playgroud)

或者,或者:

layout(constant_id = 0) const float arr[4] = float[] (
    2.0f, 2.0f,
    4.0f, 4.0f
);
Run Code Online (Sandbox Code Playgroud)

据我所知,可以使用的专门化常量的数量没有限制,所以感觉很奇怪,这是不可能的,但是当我尝试上述操作时,SPIR-V 编译器通知我“constant_id”只能应用于标量。目前,我使用统一缓冲区来提供数据,但我想消除后备缓冲区以及在绘制之前绑定缓冲区的需要,并允许系统在管道创建期间优化代码(如果可能)。

c++ glsl vulkan spir-v

5
推荐指数
1
解决办法
1040
查看次数

标签 统计

c++ ×1

glsl ×1

spir-v ×1

vulkan ×1