Как отсоединить текстуру от кадрового буфера - PullRequest
6 голосов
/ 18 июля 2011

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

Вопрос:

Как плохо было бы создать, скажем, 512 FBO с 512 текстурами, привязанными к каждой из них. Разве не было бы лучше использовать только один FBO, в этом случае мне нужно будет развязать текстуру, ранее привязанную к FBO, как мне это сделать, или я должен придерживаться 512 FBO?

Ответы [ 2 ]

5 голосов
/ 18 июля 2011

Используйте только одно FBO и прикрепите к нему текстуры.Когда вы прикрепляете другую текстуру, исходная текстура отсоединяется от FBO.

Кроме того, вы можете прикрепить ID текстуры 0 к FBO, чтобы отсоединить текущую текстуру от FBO.

4 голосов
/ 18 июля 2011

Вы отсоединяете текущую прикрепленную текстуру с помощью , прикрепляя нулевую текстуру к той же точке присоединения (см. Главу 4.4 спецификации).

Я не могу точно сказать, будет ли отсоединение и повторное присоединение текстур более быстрым или переключение объектов кадрового буфера, поскольку это зависит от реализации.
Концептуально, однако, присоединение и отсоединение текстур означает вдвое больше библиотечных вызовов и вдвое больше проверок полноты кадрового буфера в драйвере, поэтому я предполагаю, что использование нескольких FBO будет быстрее (хотя 512 - потрясающее число!)

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

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