Как перенести массив структур из glfw C++ в glsl?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как перенести массив структур из glfw C++ в glsl?

Сообщение Anonymous »

Можете ли вы помочь мне перенести массив структур в шейдер?
У меня есть массив ТочечСвет
с++:

Код: Выделить всё

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;

};
сам шейдер для передачи массива в
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[];
};
как правильно было бы передать массив структур ТочечСвет?
пробую
с++:

Код: Выделить всё

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);
но это не работает


Подробнее здесь: https://stackoverflow.com/questions/793 ... -c-to-glsl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»