Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Доступ к Z-буферу в OpenGL

391
16 ноября 2006 года
Archie
562 / / 03.02.2005
Собственно, не могу определиться с такими вопросами:
1. Как определить, что такой-то полигон был отрисован (и виден, частично или полностью) после рендеринга сцены в OpenGL (посредством OpenGL)?
2. Более конкретный вопрос: как считать буфер глубины, опять же, после рендеринга сцены?
3. Ну и напоследок: Если (2) вообще реализуется, насколько медленным будет доступ к этому буферу, и есть-ли механизмы быстрого копирования его из памати видеоадаптера в основную память?

Thnx.
8.2K
17 ноября 2006 года
Akela
64 / / 13.05.2005
1. Использовать расширение GL_ARB_occlusion_query либо GL_NV_occlusion_query. Данные расширения предоставляют функции, с помощью которых можно узнать, сколько пикселей полигона (объекта) прошли тест глубины (или (тест глубины + stencil тест)).
2. Читать из буфера глубины, как и из любого другого буфер (буфера цвета, буфера шаблонов) можно с использованием функции glReadPixels. Применительно к буферу глубины чтение будет выглядеть следующим образом: glReadPixels(x, y, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, pixels), где x, y - координаты левого верхнего угла считываемого прямоугольника, width, height - размеры прямоугольника, pixels - указатель на массив принимаемых значений типа float размером width * height;
3. Других методов чтения из буфера глубины нет. Скорость же считывания с помощью glReadPixels убывает пропорционально размеру считываемого прямоугольника.
391
23 ноября 2006 года
Archie
562 / / 03.02.2005
Оно. Спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог