我正在尝试在不使用uniform变量的情况下将类型为sampler2D
的变量传递到我的着色器中。
相反,我想使用Shader Storage Buffer Object(SSBO)来传递它。在结构体中必须声明哪种类型的变量以进行传递?然后我如何在着色器中将此类型转换为sampler2D
?
我正在尝试在不使用uniform变量的情况下将类型为sampler2D
的变量传递到我的着色器中。
相反,我想使用Shader Storage Buffer Object(SSBO)来传递它。在结构体中必须声明哪种类型的变量以进行传递?然后我如何在着色器中将此类型转换为sampler2D
?
sampler
只是不透明类型,而不是实际变量,其值无法在着色器中被访问。OpenGL实现将使用您通过glUniform1i
设置的sampler
值来实际设置纹理采样方式,以便在特定硬件上完成操作 - 在某些实现中,更改sampler
的值实际上会触发着色器代码的重新编译或修补。sampler
类型只能在GLSL着色器的默认uniform块中声明,sampler
的值不能来自SSBO、UBO、TBO或其他任何地方,并且您不能在GLSL中使用sampler
类型作为左值。