Russian Qt Forum

Qt => OpenGL => Тема начата: Crazy Sage от Январь 16, 2017, 13:16



Название: Передача структур данных в вычислительные шейдеры
Отправлено: Crazy Sage от Январь 16, 2017, 13:16
Доброго дня.
Не могу разобраться, как с помощью Qt передать в вычислительный OpenGL шейдер данные, которые являются не вектором объектов стандартного типа, а вектором структур.

Например в шейдере у меня есть вот такие входные данные

Код:
struct Face{
vec4 v0;
vec4 v1;
vec4 v2;
vec4 n;
int shine;
};

layout(std430, binding=1) buffer faces{
    Face f[];
};

В openFramework я просто выделял буфер на основе вектора из аналогичных структур, а потом bind-ил его к шейдеру с указанием номера binding'а
В Qt конечно есть QOpenGLBuffer, но не могу понять ни как его выделить на базе вектора структур, ни как привязать его к шейдеру. Может кто-нибудь объяснить?

И как делать dispatch вычислительного шейдера? Сугубо через QOpenGLFunctions_4_3_Core или есть какая-то Qt обёртка?