Как объединить два FBO? - PullRequest
3 голосов
/ 26 марта 2010

ОК, поэтому у меня есть 4 буфера, 3 FBO и буфер рендеринга. Позвольте мне объяснить.

У меня есть представление FBO, которое будет сохранять сцену до того, как я ее отрендерю в буфер рендеринга.

У меня есть фоновый буфер, который содержит фон сцены.

У меня есть пользовательский буфер, которым пользователь манипулирует.

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

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

Однако я не могу понять, как привлечь FBO к другому FBO. То, что я хочу сделать, это по сути слить и смешать два FBO, но я не могу понять, как! Я очень новичок в OpenGL ES, так что спасибо за помощь.

1 Ответ

2 голосов
/ 26 марта 2010

Настройте свои закадровые кадровые буферы для рендеринга непосредственно в текстуру. Эта ссылка показывает вам, как:

http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/WorkingwithEAGLContexts/WorkingwithEAGLContexts.html#//apple_ref/doc/uid/TP40008793-CH103-SW7

Позвольте мне уделить время описанию кадровых буферов и буферов рендеринга для моей и вашей пользы. Фреймбуфер подобен порту, который принимает команды рендеринга OpenGL. Он должен быть прикреплен к текстуре или буферу рендеринга, прежде чем вы сможете увидеть или использовать выходные данные рендеринга. Вы можете выбрать между прикреплением текстуры, используя glFramebufferTexture2DOES или рендерингом буфера, используя glFramebufferRenderbufferOES. Визуализация буфера похожа на растровое изображение, которое содержит результаты рендеринга. Хранение растрового изображения управляется OpenGL. Если вы хотите, чтобы изображение отображалось на экране, а не за пределами буфера, вы используете -[EAGLContext renderBufferStorage:fromDrawable:], чтобы использовать хранилище EAGLContext с буфером рендеринга. Этот код находится в шаблоне проекта OpenGL ES.

Вероятно, вам не нужен кадровый буфер представления, поскольку после рендеринга фона сцены и пользовательского слоя в текстуры вы можете нарисовать эти текстуры в буфер визуализации (то есть в буфер кадров, связанный с экранным буфером визуализации). *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...