GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
Does GL_SHADER_STORAGE_BUFFER locations collide with other shaders locations?
我有多个使用着色器存储缓冲区的glsl文件。如果我将缓冲区基础与其他着色器文件绑定,但它们在存储缓冲区中的位置相同,则它们似乎会相互影响。这是否意味着我必须以某种方式解除绑定?当我为每个文件选择其他位置时,它们似乎对代码没有影响。
例如
第一.vs
layout(std430, binding = 0) buffer texture_coordinate_layout
{
vec2 texture_coordinates[];
};
秒.vs
layout(std430, binding = 0) buffer vertices_layout
{
vec2 vertices[];
};
当有两个不同的着色器程序时,当我与每个类似的绑定时
第一个着色器程序
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, m_vertex_ssbo);
第二着色器程序
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, m_texture_coordiante_ssbo);
缓冲区绑定是上下文状态的一部分,而不是着色器程序的。上下文中的索引0是索引0;它与任何程序都没有直接关联。
当程序用于渲染目的时,程序仅指定哪个索引绑定点用于该特定变量。如果需要为程序中的特定变量使用特定缓冲区对象,则在渲染之前,需要确保特定缓冲区绑定到程序将读取的索引处的上下文总是。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 0xC0000005:读取位置0xCDCDCDC1时发生访问冲突
- 0xC0000005:读取位置0xCDCDCDCD时发生访问冲突
- 读取类的析构函数中的位置时发生访问冲突
- 在尝试使用CUDA分配内存时,我遇到了访问冲突写入位置错误
- 创建 2D 数组0xCCCCCCCC访问冲突写入位置
- 0x0F50DF58:0xC0000005:访问冲突读取位置0x0047CA04时未处理的异常
- 在 DLL 中嵌入 Python:Py_DECREF列表对象时访问冲突读取位置
- 在 C 代码中调用 Python 函数时第三次出现访问冲突写入位置错误
- 0xC0000005:访问冲突读取位置0x0000000000000008
- 使用动态数组访问冲突写入位置
- C++访问冲突读取位置0xDDDDDDCD当我尝试删除已更新的数组时
- 使用向量的函数崩溃,调试器说访问冲突读取位置
- vc++ 访问冲突读取位置
- C++ - 智能指针 - 访问冲突读取位置0xDDDDDDDD
- C++访问冲突读取位置错误