Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl GLSL统一布局绑定和纹理_Opengl_Glsl_Shader_Opengl 4 - Fatal编程技术网

Opengl GLSL统一布局绑定和纹理

Opengl GLSL统一布局绑定和纹理,opengl,glsl,shader,opengl-4,Opengl,Glsl,Shader,Opengl 4,当制服使用布局绑定时,我对绑定纹理的正确方法有点困惑 layout(binding = 0, std140) uniform uCommon { mat4 projectionMatrix; mat4 viewMatrix; }; layout(binding = 1, std140) uniform uModel { mat4 modelViewProjectionMatrix; }; layout(binding = 3) uniform sampler2D uT

当制服使用布局绑定时,我对绑定纹理的正确方法有点困惑

layout(binding = 0, std140) uniform uCommon
{
    mat4 projectionMatrix;
    mat4 viewMatrix;
};

layout(binding = 1, std140) uniform uModel
{
    mat4 modelViewProjectionMatrix;
};

layout(binding = 3) uniform sampler2D uTexture;
要绑定我的第一个纹理,我应该使用“GL_TEXTURE0+3”

这是正确的方法吗

编辑:或者采样器是否使用与其他制服不同的装订?我可以使用:

layout(binding = 0) uniform sampler2D uTexture;
在仍然使用时

layout(binding = 0, std140) uniform uCommon

统一块绑定索引与取样器绑定位置无关。这些是不同的事情

用于指定绑定点或单位的整型常量表达式在关键字
绑定的所有用法中都不必是唯一的


绑定标识符指定与统一或着色器存储块相对应的统一缓冲区绑定点,该绑定点将用于获取块的成员变量值


图像和采样器类型都采用统一布局限定符标识符进行绑定:

layout-qualifier-id :
    binding = integer-constant-expression
标识符绑定指定要绑定的单元


它到底行不行?如果它不起作用,那么展示一个不起作用的完整示例。如果有效,那么请解释你为什么问这个问题,以及你希望得到什么样的解释。Atm,“是”将是一个有效的答案。为什么您认为统一块绑定索引与采样器绑定位置有关?:图像和采样器类型都使用统一布局限定符标识符进行绑定。。。。标识符绑定指定将绑定哪个单元。BDL,它可以工作。但它甚至可以在“uTexture”绑定到“0”(而“uCommon”也绑定到“0”)并且使用“GL_TEXTURE0+0”时工作。所以我不确定采样器是否使用单独的绑定。另外,我没有收到任何德国劳埃德船级社的警告或错误。@Gediminas请参阅Nicol Bolas的评论。统一块绑定索引与取样器绑定位置无关。这些是不同的事情。它们不必在所有类型的“绑定”中都是唯一的。
layout-qualifier-id :
    binding = integer-constant-expression