Окно, которое поддерживает OpenGL-репдерннг (то есть буфер кадров), может состоять из комбинаций таких частей:

□ нескольких (до четырех) цветных буферов;

□ буфера глубины;

□ буфера шаблона;

□ накопительного буфера;

□ буфера мультисемплипга.

В большинстве графических ускорителей есть и первичный, и вторичный буферы, что позволяет им поддерживать двойную буферизацию. Приложение обрабатывает данные во вторичном буфере (закадровом), в то время как первичный буфер отображается на экране. После завершения визуализации буферы меняются местами, так что результат отображается на экране как первичный буфер, и рендеринг можно начинать со вторичного буфера. При использовании двойной буферизации пользователь никогда не видит сам процесс рисования изображения, а всегда - только законченную картинку. Такая техника используется для того, чтобы анимация была более плавной в интерактивном просмотре1.

Стереоизображение формируется с помощью двух цветных буферов: одного для правого глаза, другого - для левого. Двойная буферизация поддерживается с помощью первичного и вторичного буферов. Таким образом, стереоокно двойной буферизации будет иметь четыре цветных буфера: передний левый, передний правый, задний левый, задний правый. Обычное (не стерео) окно с двойной буферизацией будет иметь и первичный, и вторичный буферы. Однобуферное окно ограничивается одним первичным буфером.

Буфер глубины применяется для удаления невидимых областей трехмерных объектов. Этот буфер хранит глубину объекта для каждого его пиксела. При рисовании нескольких объектов сравнивается глубина для каждого пиксела, чтобы определить, видим новый объект или скрыт.

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

Накопительный буфер - это цветной буфер с компонентами более высокой, чем в обычных цветных буферах, точности. Несколько изображений могут накапливаться в нем, чтобы получилось составное изображение. Один из вариантов применения накопительного буфера - рисование в него нескольких контуров объекта в движении. Каждый пиксел накопительного буфера делится на количество контуров, и в результате получается картинка, которая показывает неясные очертания движущихся объектов. Можно использовать похожие техники для имитации эффектов глубины резкости и высококачественного полноэкранного устранения ступенчатости изображения, которое в дальнейшем станем называть сглаживанием (full-screen antialiasing).

В процессе рендеринга происходит дискретизация данных, при этом определяется, какой именно графический примитив влияет на отдельно взятый пиксел. В дальнейшем параметры этого примитива используются для установки параметров пиксела. А буфер мультисемплипга’ хранит в себе данные в виде нескольких семплов для каждого пиксела. Это позволяет выполнять высококачественное полноэкранное сглаживание3 без перерисовывания сцены. Каждый семпл содержит информацию о цвете, глубине и шаблоне пиксела, а приложение может узнать количество семплов на пиксел. Когда окно имеет буфер мультисемплинга, у него нет отдельных буферов глубины или шаблона. В процессе рендеринга объектов семплы одного пиксела сочетаются, учитывая некоторые семплы соседних пикселов, для получения единственного значения цвета. Именно это значение потом используется для записи в буфер цвета. Из-за того что буферы мультисемплинга могут содержать много семплов (зачастую 4, 8 или 16) глубины, цвета и шаблона для каждого пиксела, они могут занимать большой объем закадровой видеопамяти.


⇐ вернуться назад | | далее ⇒