【发布时间】:2020-01-04 18:37:00
【问题描述】:
假设我有一个动态数量的“球”,我想在我的 OpenGL 着色器中访问它们。在 C++ 中,数据可能是这样的:
struct Ball
{
glm::vec3 position;
glm:vec3 colour;
float size;
};
std::vector<Ball> all_balls;
如果我想在片段着色器中迭代all_balls,我相信我需要一个着色器存储缓冲区对象。
This documentation 涉及数组,但明显不完整。
我假设我可以像这样将数据发送到缓冲区
glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssbo);
glBufferData(GL_SHADER_STORAGE_BUFFER, all_balls.size() * sizeof(Ball), &(all_balls[0]), usage);
在 GLSL 中,我如何指定缓冲区是一个数组,我的着色器如何知道这个数组的大小?
【问题讨论】:
-
@Rabbid76 wiki 页面不完整,当它开始谈论这个话题时,它的字面意思是“TODO:这部分需要填写”。我的着色器如何知道这个数组的大小?
标签: opengl glsl shader-storage-buffer buffer-objects