При помощи операции d3dpp. Enabl eAutoDepthStenci 1 - TRUE указывается, что будет выделена память для Z-буфера, а оперативное включение и выключение применения Z-буфера для удаления невидимых точек выполняется отдельным методом

Применение библиотеки DirectX

SetRenderState( ) с параметром D3DRS_ZENABLE. Этот метод можно вызвать при инициализации или включать и выключать Z-буфер для отдельных групп примитивов в процессе рендеринга.

После создания устройства размер поверхности рисования не изменяется, но при помощи метода SetViewport( ) на ней можно задать прямоугольник, в который отобразится канонический квадрат. Структура extern D3DVIEWP0RT9 VP содержит размеры VP.Height, VP.Width и расположение области просмотра, заданной в системе координат теневого буфера.

Вместо двух попыток создать Direct3DDevice9 с разными настройками можно было вызовом D3D->CheckDeviceType( ) проверить, будет ли поддерживать библиотека работу в заданной конфигурации. Для этого методу передаются такие же параметры - номер дисплея, формат пиксела в видимой и активной страницах, режим доступа к экрану, а также использование аппаратного ускорения.

Можно также без предварительной проверки запросить текущий видеорежим, вызвав метод D3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &dM). В структуру dM типа D3DDISPLAYM0DE запишутся разрешение экрана и формат пиксела. Использование текущего формата пиксела в структуре D3DPRESENT_PARAMETERS также предотвратит ошибку инициализации.

Параметр D3DCREATE_S0FTWARE_VERTEXPR0CESSING устанавливается, если программа должна работать с любой видеокартой, так как в ускорителях предыдущего поколения реализована только развертка примитивов, а обработка вершин (VERTEXPROCESSING), включая преобразование систем координат, проецирование на плоскость и отсечение, выполняет основной процессор. Если ускоритель имеет аппаратную поддержку трансформации и освещения (T&L), то можно передавать параметр D3DCREATE_HARDWARE_VERTEXPR0CESSING, чтобы задать аппаратную обработку вершин.


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