Использование glMultiDrawElementsIndirect

Итак, я пытаюсь написать простой цикл рендеринга, чтобы понять, glMultiDrawElementsIndirect, Но в данный момент он зависает весь мой компьютер (Ubuntu 14.04) и заставляет меня перезапустить его.

Я определяю эту структуру в соответствии со спецификацией OpenGL:

struct DrawElementsIndirectCommand{
GLuint count;
GLuint instanceCount;
GLuint firstIndex;
GLuint baseVertex;
GLuint baseInstance;
};

тогда в данный момент мое понимание таково (в псевдокоде):

create vertex array
create vertex buffer
create element buffer
create draw indirect buffer

bind vertex array
bind vertex buffer & allocate some base storage
bind element buffer & allocate some base storage
bind draw indirect buffer & allocate some base storage

for every mesh in meshes
load vertices into back of GL_ARRAY_BUFFER
load elements into back of GL_ELEMENT_ARRAY_BUFFER
create Draw...Command and put it at the back of GL_DRAW_INDIRECT_BUFFER

тогда в моем цикле рисования:

bind vertex array

glMultiDrawElementsIndirect(
GL_TRIANGLES,
GL_UNSIGNED_INT,
nullptr,
num of commands loaded,
0
)

И это полностью замораживает мой компьютер. D: Я действительно не думаю, что понимаю правильное использование glMultiDrawElementsIndirectкакой правильный путь? и как я могу сделать то, что я делаю сейчас? Я хочу загрузить все мои сетки в один блок.

3

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]