Мой инициализатор SSBO:
Код: Выделить всё
GLuint ssbo = 0;
glGenBuffers(1, &ssbo);
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, ssbo);
glBufferData(GL_SHADER_STORAGE_BUFFER, 4 * sizeof(float), NULL, GL_DYNAMIC_DRAW);
< /code>
my рендеринг цикл: < /p>
...
auto ray_dir = convert_mouse_coords_to_world();
auto& d_shader = ShaderPool::get_shader(ShaderProgram::DEFAULT);
d_shader->use();
glUniform3fv(glGetUniformLocation(d_shader->get_id(), "ray_dir"), 1, ray_dir.data());
Camera::use(d_shader);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssbo);
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, ssbo);
mesh.render(d_shader);
GLfloat* ptr = (GLfloat*)glMapBuffer(GL_SHADER_STORAGE_BUFFER, GL_READ_ONLY);
memcpy(picked, ptr, 4 * sizeof(float));
glUnmapBuffer(GL_SHADER_STORAGE_BUFFER);
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79388320/how-to-use-a-ssbo-to-update-data-in-shader-and-reading-it-back-from-the-app[/url]