Как визуализировать объекты Framebuffer на нескольких образцах текстур?
В настоящее время у меня есть механизм рендеринга, использующий несколько проходов, в которых различные части изображения визуализируются на текстурах, а затем комбинируются с использованием шейдеров. Это работает, и теперь я хотел бы активировать мультисэмплинг.
Я прочитал здесь ( http://www.opengl.org/wiki/Framebuffer_Object_Examples), что с OpenGL вы не можете прикрепить GL_TEXTURE2D_MULTISAMPLE
к объекту кадрового буфера.
Кажется, один из способов использования мультисэмплинга с сохранением доступа к результату, так как текстура состоит в том, чтобы использовать буфер мультисэмплирования рендеринга, а затем скопировать результат в текстуру мультисэмпла.
Мой вопрос: что было бы лучшим способом идти вперед?
- Можно ли визуализировать в буфере рендеринга и использовать вывод в моем шейдере, не копируя в текстуру?
- Должен ли я действительно скопировать содержимое буфера в текстуру, а затем использовать его?
- Есть ли другое, лучшее решение?
Благодарю.
1 ответ
Я прочитал здесь ( http://www.opengl.org/wiki/Framebuffer_Object_Examples), что с OpenGL вы не можете прикрепить GL_TEXTURE2D_MULTISAMPLE к объекту кадрового буфера.
Прочитайте это снова. Это ничего не говорит о текстурах GL_TEXTURE_2D_MULTISAMPLE. На самом деле, я забираю это назад: не читайте эту страницу снова. Если вам нужна хорошая информация о FBO, прочитайте страницу об объектах Framebuffer, которая объясняет поведение 3.x. Страница, на которую вы ссылаетесь, старая.
Еще в дни EXT все, что у вас было, - это рендеринг-буферы с несколькими выборками, потому что текстур с несколькими выборками не было. Вы можете создавать мультисэмплерные буферы, но вы не можете создавать текстуры с ними. Вы могли только их уничтожить.
В 3.3 OpenGL вы можете создавать мультисэмплированные текстуры. И вы можете прикрепить их, как и любую другую текстуру к FBO.