Как визуализировать объекты Framebuffer на нескольких образцах текстур? - PullRequest
5 голосов
/ 16 февраля 2012

В настоящее время у меня есть механизм рендеринга, использующий несколько проходов, в которых различные части изображения визуализируются на текстурах, а затем комбинируются с использованием шейдеров.Это работает, и теперь я хотел бы активировать мультисэмплинг.

Я читал здесь (http://www.opengl.org/wiki/Framebuffer_Object_Examples#MSAA), что с OpenGL вы не можете присоединить GL_TEXTURE2D_MULTISAMPLE к объекту кадрового буфера.

Кажется, один из способов использовать мультисэмплинг и при этом иметь доступ к результату, так как текстура состоит в том, чтобы использовать буфер мультисэмплирования, а затем скопировать результат в текстуру с мультисэмплом.

Мой вопрос: что было бы лучшим способом продвинуться вперед?

  • Возможно ли выполнить рендеринг в буфере рендеринга и использовать вывод в моем шейдере, без копирования в текстуру?
  • Должен ли я действительно скопировать содержимое буфера в текстуру, а затем использовать его?
  • Есть ли другое, лучшее решение?

Спасибо.

1 Ответ

6 голосов
/ 16 февраля 2012

Я прочитал здесь (http://www.opengl.org/wiki/Framebuffer_Object_Examples#MSAA), что с OpenGL вы не можете прикрепить GL_TEXTURE2D_MULTISAMPLE к объекту кадрового буфера.

Прочитайте его еще раз.Это ничего не говорит о текстурах GL_TEXTURE_2D_MULTISAMPLE.На самом деле, я принимаю это обратно: не читайте эту страницу снова.Если вам нужна хорошая информация о FBO, прочитайте страницу об объектах Framebuffer , которая объясняет поведение 3.x.Страница, на которую вы ссылались, старая.

В дни EXT все, что у вас было, это рендеринг буфера с несколькими выборками, потому что текстур с несколькими образцами не было.Вы можете создавать мультисэмплерные буферы, но вы не можете текстура с ними.Вы можете их только сгладить.

В 3.3 OpenGL вы можете создавать мультисэмплированные текстуры.И вы можете прикрепить их, как и любую другую текстуру к FBO.

...