【发布时间】:2021-06-27 16:37:37
【问题描述】:
我发现我可以像这样使用统一缓冲区来存储多个变量
#version 330 core
layout (location = 0) in vec3 aPos;
layout (std140) uniform Matrices
{
mat4 projection;
mat4 view;
};
uniform mat4 model;
void main()
{
gl_Position = projection * view * model * vec4(aPos, 1.0);
}
并像对待任何其他缓冲区一样对待这些数据
unsigned int uboMatrices
glGenBuffers(1, &uboMatrices);
glBindBuffer(GL_UNIFORM_BUFFER, uboMatrices);
glBufferData(GL_UNIFORM_BUFFER, 2 * sizeof(glm::mat4), NULL, GL_STATIC_DRAW);
glBindBuffer(GL_UNIFORM_BUFFER, 0);
glBindBufferRange(GL_UNIFORM_BUFFER, 0, uboMatrices, 0, 2 * sizeof(glm::mat4));
但是,我似乎找不到任何可以让我将此类缓冲区视为数组的示例。本质上我想实现这样的全局随机访问缓冲区
#version 330 core
layout (location = 0) in vec3 aPos;
layout (what here?) uniform float[] globalBuffer;
uniform mat4 model;
void main()
{
...
}
长期计划是稍后使用 OpenCL 生成这个数组
【问题讨论】: