Смешайте FBO с кадровым буфером по умолчанию - PullRequest
5 голосов
/ 23 января 2012

Чтобы уточнить, когда я говорю «кадровый буфер по умолчанию», я имею в виду тот, который предоставляется оконной системой, и то, что заканчивается на вашем мониторе.

Чтобы улучшить скорость рендеринга для приложения CAD, мне удалосьотделить трехмерные элементы от двумерных с обработкой Qt, и теперь каждый из них рендерится в свои собственные FBO.Когда приходит время выводить их на экран, я переворачиваю 3D FBO на стандартный FB, а затем хочу смешать 2D 2D FBO поверх него.

Я дошел до мелкой части отлично, но я не вижу, как смешать мои 2D FBO на него?Оба FBO идентичны по размеру и формату, и оба они совпадают с FB по умолчанию.

Я уверен, что это простая операция, но я ничего не могу найти в сети - возможно, яне хватает правильного термина для того, что я пытаюсь сделать.Хотя я использую Qt, я могу без проблем использовать собственные команды OpenGL.

Ответы [ 3 ]

7 голосов
/ 23 января 2012

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

1 голос
/ 23 января 2012

Вы можете использовать GL_EXT_framebuffer_blit до blit содержимое объекта кадрового буфера для кадрового буфера приложения (или любого другого). Хотя, как говорится в спецификации, невозможно использовать смешивание:

Пиксельная копия обходит конвейер фрагмента. Единственный фрагмент Операции, которые влияют на блиц - это тест владения пикселем тест ножниц.

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

0 голосов
/ 08 октября 2016

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

https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_framebuffer_fetch.txt

...