Библиотека DirectX разработана специально для операционной системы Windows. Целью ее создания могло быть получение более высоких характеристик за счет ориентации библиотеки на конкретную архитектуру ЭВМ и операционную среду, быстрого реагирования на изменения в архитектуре графических ускорителей. Например, в DirectX реализованы оконный и полноэкранный уровни привилегий при работе с экраном. В полноэкранном режиме предполагается, что весь экран как ресурс предоставляется одному приложению. Поэтому приложению разрешено программно изменять видеорежим, причем как размер растра,
Применение библиотеки DirectX
так и формат пиксела. Возможные форматы пиксела, которые в терминах DirectX называются форматом поверхности, определяют распределение битов ячейки буфера цвета между компонентами цвета и коэффициентом прозрачности. Они задаются перечисляемым типом, определение которого приведено в листинге 23.3.
Листинг 23.3
typedef епыт _D3DF0RMAT {
D3DFMT_UNKNOWN=0. //Эта константа используется в ситуациях, когда требуется, //чтобы система сама выбрала формат
D3DFMT_R8G8B8 - 20. //Пиксел состоит из трех 8-битных цветовых компонентов. D3DFMT_A8R8G8B8 - 21. //Пиксел содержит дополнительно 8-битный альфа-канал. D3DFMT_X8R8G8B8 - 22. //Для хранения точки требуется четыре байта. D3DFMT_R5G6B5 = 23. //Режим Hi Col or 5-6-5. D3DFMT_X1R5G5B5 - 24. //Режим Hi Col or 5-5-5.
В полноэкранном режиме DirectX позволяет организовать тройную буферизацию, позволяющую избежать потерь времени на ожидание обратного хода луча по кадру при аппаратном переключении страниц. А при двойной буферизации в этом режиме можно отменить ожидание перед началом копирования обратного хода луча по кадру.
Поля структуры PIXELFORMATDESCRIPTOR
При знакомстве с OpenGL указывалось, что информацию о настройке графической системы необходимо передать библиотеке при ее инициализации. В OpenGL настроечные данные сведены в структуру PIXELFORMATDESCRIPTOR, в DirectX ту же роль играет структура _D3DPRESENT_PARAMETERS_. Самые важные ее поля приведены в следующем списке: