Визуализация буфера трафарета для текстуры

Я пытаюсь поместить буфер трафарета в текстуру для использования в отложенном рендере.

Я получаю другие приложения цвета и глубины с glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textures[color1], 0); и результат верный.Правильный рендеринг без буфера трафарета

Однако, когда я пытаюсь прикрепить свой буфер трафарета к текстуре с glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT ,GL_TEXTURE_2D, textures[stencil], 0); Я получаю искаженный результат, как будто FBO не очищает свои буферы.

Неправильный искаженный рендеринг

Я не знаю, в чем проблема. Я подозреваю, что это проблема с настройкой текстуры трафарета...

//Stencil Texture Initialization

glBindTexture(GL_TEXTURE_2D, textures[stencil]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

glTexImage2D( GL_TEXTURE_2D, 0, GL_STENCIL_INDEX8, 512, 512, 0, GL_STENCIL_INDEX, GL_BYTE, 0);

Я не получаю никаких кодов ошибок в моей настройке, поэтому я не понимаю, в чем проблема.

РЕДАКТИРОВАТЬ: Может быть, я не делаю это правильно. Если кто-то знает, как записать трафаретный буфер в текстуру, мне все равно, пишу ли я другую кодировку. Мне просто нужен метод, который работает.

1 ответ

Решение
GL_STENCIL_INDEX8

Никогда не используйте это. Если вам нужны биты трафарета, всегда используйте упакованное изображение глубины / трафарета, например GL_DEPTH24_STENCIL8, Вы должны приложить это к GL_DEPTH_STENCIL_ATTACHMENT точка.

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