是否有方法将sampler 2D和纹理对象提交到OpenGL-GLSL中的不同插槽中?

3okqufwl  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(207)

我想为纹理和采样器做单独的绑定。像下面的代码:

layout(set = 1, binding = 1) uniform texture2D SurfaceTexture;
layout(set = 1, binding = 2) uniform sampler SurfaceSampler;

但在链接着色器时出现以下错误:

error C7548: 'layout(set)' requires "#extension GL_KHR_vulkan_glsl : enable" before use

我正在尝试创建一个API不可知渲染器,它也将支持DX11-DX12和Vulkan,所以我应该在不同的插槽提交纹理和采样。

qyyhg6bp

qyyhg6bp1#

我想做纹理和采样器的单独绑定。
OpenGL不希望您这样做,所以您不能。
GL不允许你做单独的纹理/采样器的事情(甚至没有一个扩展)。D3 D * 要求 * 你做单独的纹理/采样器的事情。Vulkan会让你做任何一个。
所以你得选一边,或者你得让你的渲染器把一边翻译成另一边。
此外,OpenGL没有描述符集,因此layout(set = #没有意义。

相关问题