Ged*_*nas 2 opengl shader glsl 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 uTexture;
Run Code Online (Sandbox Code Playgroud)
要绑定我的第一个纹理,我应该使用“GL_TEXTURE0 + 3”吗?
glActiveTexture(GL_TEXTURE0 + 3);
glBindTexture(GL_TEXTURE_2D, textureId);
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
编辑:或者采样器使用与其他制服分开的绑定?我可以用吗:
layout(binding = 0) uniform sampler2D uTexture;
Run Code Online (Sandbox Code Playgroud)
还在使用的时候
layout(binding = 0, std140) uniform uCommon
Run Code Online (Sandbox Code Playgroud)
统一块绑定索引与采样器绑定位置无关。这些是不同的东西。
用于指定绑定点或单位的integer-constant-expression不必在关键字 的所有用法中都是唯一的binding。
请参阅OpenGL 着色语言 4.60 规范;4.4.5 统一和着色器存储块布局限定符;第 77 页
绑定标识指定uniform或shader存储块对应的uniform缓冲区绑定点,用于获取块的成员变量的值。
请参阅OpenGL 着色语言 4.60 规范;4.4.6 不透明-统一布局限定符;第 79 页
图像和采样器类型都采用统一布局限定符标识符进行绑定:
Run Code Online (Sandbox Code Playgroud)layout-qualifier-id : binding = integer-constant-expression标识符绑定指定将绑定哪个单元。
| 归档时间: |
|
| 查看次数: |
3650 次 |
| 最近记录: |