Доступ к Z-буферу в OpenGL
1. Как определить, что такой-то полигон был отрисован (и виден, частично или полностью) после рендеринга сцены в OpenGL (посредством OpenGL)?
2. Более конкретный вопрос: как считать буфер глубины, опять же, после рендеринга сцены?
3. Ну и напоследок: Если (2) вообще реализуется, насколько медленным будет доступ к этому буферу, и есть-ли механизмы быстрого копирования его из памати видеоадаптера в основную память?
Thnx.
2. Читать из буфера глубины, как и из любого другого буфер (буфера цвета, буфера шаблонов) можно с использованием функции glReadPixels. Применительно к буферу глубины чтение будет выглядеть следующим образом: glReadPixels(x, y, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, pixels), где x, y - координаты левого верхнего угла считываемого прямоугольника, width, height - размеры прямоугольника, pixels - указатель на массив принимаемых значений типа float размером width * height;
3. Других методов чтения из буфера глубины нет. Скорость же считывания с помощью glReadPixels убывает пропорционально размеру считываемого прямоугольника.
Оно. Спасибо.