Визуализация буфера трафарета для текстуры
Я пытаюсь поместить буфер трафарета в текстуру для использования в отложенном рендере.
Я получаю другие приложения цвета и глубины с 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
точка.