Как визуализировать объекты 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.

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