Hello, can you help me transfer an array of structures to a shader?
I have a TochechSvet array
с++:
struct TochechSvet {
TochechSvet(glm::vec3 zerkal = glm::vec3(), glm::vec3 smeshenie = glm::vec3(), glm::vec3 minSvet = glm::vec3(), glm::vec3 mesto = glm::vec3(), float konstanta = 0.f, float linei = 0.f, float kvadrat = 0.f)
: zerkal(zerkal), smeshenie(smeshenie), minSvet(minSvet), mesto(mesto), konstanta(konstanta), linei(linei), kvadrat(kvadrat)
{
}
glm::vec3 zerkal;
glm::vec3 smeshenie;
glm::vec3 minSvet;
glm::vec3 mesto;
float konstanta;
float linei;
float kvadrat;
};
and the function of transferring it to the shader through the buffer
с++:
glGenBuffers(1, &idGLarr);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, idGLarr);
glBufferData(GL_SHADER_STORAGE_BUFFER, numSvet * sizeof(TochechSvet), svetArr, GL_STATIC_DRAW);
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 2, idGLarr);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0);
the shader itself to pass the array to
glsl:
struct TochechSvet {
vec3 otraj;
vec3 smesh;
vec3 minSvet;
vec3 mesto;
float konstanta;
float linei;
float kvadrat;
};
layout(std430, binding = 2) buffer Pomeh
{
TochechSvet tochechSveti[];
};
how would it be correct to pass an array of TochechSvet structures?