Можно ли очистить только определенные текстуры в фреймбуфере с мульти-целевым рендерингом?
У меня есть объект framebuffer, в котором я использую Multi Target Rendering на N текстурах, привязанных к нему. В определенное время я хочу очистить содержимое некоторых из этих текстур, но не все из них.
Если я позвоню
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
каждая текстура, привязанная к FBO, будет очищена (я прав?).
Есть ли способ сделать это на конкретных буферах/текстурах рисования?
Ответы
Ответ 1
GL_COLOR_BUFFER_BIT
в вызов glClear
очистит все активные буферы цвета , как указано через glDrawBuffers
. Таким образом, вы можете изменить буферы рисования перед выполнением ясного.
Но это ненужное состояние меняется. Вы можете просто вызвать glClearBuffer
, который будет очистить конкретный буфер.
Ответ 2
Будут все буферы.
Однако вы можете маскировать буферы для очистки с помощью glColorMask. http://www.opengl.org/sdk/docs/man/xhtml/glColorMask.xml