gpt4 book ai didi

opengl - 布局量词(位置)是否应该在统一/输入/输出之间有所不同?

转载 作者:行者123 更新时间:2023-12-03 16:15:03 25 4
gpt4 key购买 nike

我现在正在为我的 GLSL 着色器设置布局量词(位置)。这个问题打动了我,这些量词 ID 是否需要彼此不同。

是否必须是:

layout (location = 0) uniform vec3 v1;
layout (location = 1) in vec3 v2;
layout (location = 2) uniform vec3 v3;
layout (location = 3) in vec3 v4;

也可以是(因为可以将位置指定为制服或输入):

layout (location = 0) uniform vec3 v1;
layout (location = 0) in vec3 v2;
layout (location = 1) uniform vec3 v3;
layout (location = 1) in vec3 v4;

谢谢。

最佳答案

而对于顶点着色器属性,布局位置是属性索引,
统一变量的布局位置是统一位置。
这些是不同的东西。

如果不设置显式布局位置,在链接着色器程序后读取位置,可以看到它们可以在同一个范围内。
这可以通过 glGetAttribLocation 完成
glGetUniformLocation

您的两种变体都是正确且可能的。
属性位置必须是唯一的,统一位置必须是唯一的。
但它们不必是明确的,超出位置索引类型。

有关布局限定符的更多详细信息,我推荐 Khronos Group 的 OGL 和 GLSL 文档:
Layout Qualifier (GLSL)

分别见OpenGL 4.6 API Core Profile Specification - 7.3.1 Program Interfaces .

Each entry in the active resource list for an interface is assigned a unique unsigned integer index in the range zero to N − 1, where N is the number of entries in the active resource list.



而统一变量的接口(interface)类型是 UNIFORM ,属性类型为 PROGRAM_INPUT .不同程序资源的位置可以通过指令 glGetProgramResourceLocation 获取。通过其程序接口(interface)类型和名称。

关于opengl - 布局量词(位置)是否应该在统一/输入/输出之间有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45261908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com