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

Ограничение возможностей программирования GPU и доступа к его машинному языку не позволяет максимально эффективно использовать возможности конкретной архитектуры.

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

На первый взгляд, нет разумных оснований предусматривать в графической системе более двух буферов цвета. Поэтому в межплатформенном языке OpenGL при инициализации возможен выбор одного из двух вариантов буферизации - с одним или двумя буферами. Библиотека DirectX позволяет создать одну видимую и до трех невидимых страниц. Тройная буферизация использует две невидимые страницы. Содержимое одного буфера отображается на экране, второй, заполненный очередным кадром, ожидает переключения страниц, а рисование производится в третий, активный буфер цвета.


⇐ Предыдущая| |Следующая ⇒