Привязка буфера рендеринга трафарета к буферу кадров в opengl

Кто-нибудь сделал это успешно? Кажется, какой бы формат индекса я не использовал в буфере рендеринга трафарета glCheckFramebufferStatus(...) возвращается GL_FRAMEBUFFER_UNSUPPORTED, Я успешно связал буфер глубины \ цвета для рендеринга, но всякий раз, когда я пытаюсь сделать то же самое с моим буфером трафарета, я получаю (как я уже сказал) GL_FRAMEBUFFER_UNSUPPORTED,

Вот фрагменты моего кода:

// Create frame buffer
GLuint fb;
glGenFramebuffers(1, &fb);

// Create stencil render buffer (note that I create depth buffer the exact same way, and It works.
GLuint sb;
glGenRenderbuffers(1, &sb);
glBindRenderbuffer(GL_RENDERBUFFER, sb);
glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, w, h);

// Attach color
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, cb, 0);

// Attach stencil buffer
glBindFramebuffer(GL_FRAMEBUFFER, fb);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rb);
// And here I get an GL_FRAMEBUFFER_UNSUPPORTED when doing glCheckFramebufferStatus()

Есть идеи?

Примечание. Цветовое вложение - это текстура, а не буфер визуализации.

2 ответа

Решение

Никогда не используйте отдельно стоящий трафаретный буфер. Если вам нужен трафарет, всегда используйте формат изображения глубина + трафарет. Обратите внимание, что форматы индекса трафарета не являются обязательными форматами изображений.

Даже если вы здесь не используете буфер глубины, вы все равно должны использовать GL_DEPTH24_STENCIL8, который вы должны прикрепить к GL_DEPTH_STENCIL_ATTACHMENT​,

Вы можете использовать только трафарет на недавнем оборудовании / драйверах nvidia

glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_TEXTURE_2D, fboStencilTexture, 0);

По-прежнему нет поддержки как отдельной глубины, так и трафарета.

Другие вопросы по тегам