Arhn - архитектура программирования

Можно ли очистить только определенные текстуры в фреймбуфере с многоцелевым рендерингом?

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

glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

каждая текстура, привязанная к FBO, будет очищена (я прав?). Есть ли способ сделать это на определенных буферах/текстурах отрисовки?

03.08.2013

Ответы:


1

GL_COLOR_BUFFER_BIT в вызове glClear очистит все файлы активные цветовые буферы отрисовки, как указано в glDrawBuffers. Таким образом, вы можете изменить буферы отрисовки перед выполнением очистки.

Но это ненужное изменение состояния. Вы можете просто вызвать glClearBuffer, что очистить определенный буфер.

03.08.2013
  • Спасибо. Как правильно использовать glClearBufferfv? glClearBufferfv(GL_COLOR_ATTACHEMENT0, 0, &color[0]) в порядке? (где цвет представляет собой массив с плавающей запятой [4]) 03.08.2013
  • @darius: glClearBufferfv принимает массив чисел с плавающей запятой. Вот что всегда означает fv. В этом случае это всегда 4 поплавка. Точно так же, как версия iv принимает 4 целых числа со знаком (для очистки буферов целочисленного формата), а uiv принимает 4 целых числа без знака. 03.08.2013
  • Спасибо за ссылку! На самом деле, в чем у меня действительно были сомнения, так это в первых двух аргументах. Если я правильно понял, это GLenum буфера и его место в массиве цветового буфера GLenum. Так что, как правило, такие вещи, как GL_COLOR_ATTACHEMENT0+i, i 03.08.2013
  • @darius: на странице руководства прямо указано, что означают эти два аргумента. И это не так. Действительно, в вики-статье об очистке буфера, на которую я ссылался, также объясняются параметры. 03.08.2013
  • Спасибо за ваше терпение там! Я прочитаю ту статью еще раз. 03.08.2013

  • 2

    Это будут все буфера. Однако вы можете замаскировать буферы для очистки с помощью glColorMask. http://www.opengl.org/sdk/docs/man/xhtml/glColorMask.xml

    03.08.2013
  • Есть две версии. Нажмите на мою ссылку. Классический маскирует компоненты, второй маскирует компоненты на каждый буфер. 03.08.2013
  • Спасибо, эта glColorMaski кажется хорошим решением. Почему этот ответ получил -1? 03.08.2013
  • @darius: он получил -1, потому что в OpenGL есть функция для прямой очистки определенного буфера. Маскирование компонентов для предотвращения очистки буфера — неправильный инструмент для этой работы. 03.08.2013
  • Вы правы, говоря о ClearBuffer. Я не думал об этом, и это, вероятно, сделает его код чище. Я все еще могу придумать сценарии, в которых маскирование будет иметь меньше вызовов gl, но ладно :) В духе обучения: я все еще думаю, что вы упускаете тот факт, что существует вторая версия glColorMask, то есть (bufferindex, r, g, b , а). 03.08.2013
  • @starmole: Нет, я это вижу (поэтому я удалил свой комментарий и проголосовал за ваш). Это все еще неправильный инструмент для работы. Нет необходимости устанавливать глобальное состояние только для очистки буфера, когда этого вообще можно избежать. 03.08.2013
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..