Чтобы реализовать «отслаивание глубины», я визуализирую свою сцену OpenGL в серии буферов кадра, каждый из которых снабжен цветовой текстурой rgba и текстурой глубины. Это нормально работает, если меня не волнует сглаживание. Если я это сделаю, то, по-видимому, правильнее всего будет включить GL_MULTISAMPLING
и использовать GL_TEXTURE_2D_MULTISAMPLE
вместо GL_TEXTURE_2D
. Но я не понимаю, какие другие вызовы нужно заменить.
В частности, как мне адаптировать мою конструкцию фреймбуфера для использования glTexImage2DMultisample
вместо glTexImage2D
?
Нужно ли мне изменять вызовы на glFramebufferTexture2D
помимо использования GL_TEXTURE_2D_MULTISAMPLE
вместо GL_TEXTURE_2D
?
Если я передаю в текстуры и цвет, и глубину, нужно ли мне вызывать glRenderbufferStorageMultisample
?
Наконец, есть ли что-нибудь glBlit*
, что мне нужно сделать в дополнение к настройке текстур для фреймбуфера для рендеринга?
Есть много связанных вопросов по этой теме, но ни одно из найденных мной решений, похоже, не указывает на каноническое руководство или четкий пример, объединяющий все это вместе.
glBlitFramebuffer
, но вы можете получить гораздо больше гибкости, просто настроив ортопроекцию и определив матрицу MV и визуализируя текстурированные четырехугольники с использованием текстуры (ов) прикрепления цвета FBO. Это позволит вам затем обработать результаты во фрагментном шейдере и выполнить пост-обработку, такую как AA или отложенное затенение. - person   schedule 25.05.2015glBlitFramebuffer
для разрешения изображения из мультисэмпловой цели и как мы можем получить доступ к текселям из мультисэмплированной текстуры, используяsampler2DMS
во фрагментном шейдере. Я не совсем понимаю, можно ли иметь один мультисэмпловый FBO, который одновременно будет содержать как глубину, так и цвет. Нам там может понадобиться два прохода. - person   schedule 25.05.2015