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

примере вызвана функция Device->SetRenderState( ) для выключения расчета цвета вершин.

Константа D3DPT_TRIANGLELIST, передаваемая методу вывода примитивов в качестве первого параметра, указывает, что каждый треугольник задается тремя отдельными вершинами. В DirectX также есть примитивы вывода веерной цепочки треугольников с общей вершиной и цепочки треугольников, связанных только общими ребрами. Типы этих примитивов задаются константами D3DPT_TRIANGLEFAN hD3DPT_TRIANGLESTRIP.

В этом и последующих примерах треугольники выводятся при помощи метода DrawPri mi ti veUP( ) для обеспечения более или менее корректного сравнения с соответствующими функциями OpenGL. В DirectX вывод треугольников принято демонстрировать с использованием метода DrawPrimiti ve( ), который читает вершины из массива, создаваемого библиотекой в видеопамяти. При этом формирование изображения значительно ускоряется. Стандарт OpenGL этого не предусматривает, но для работы с буфером вершин предусмотрено расширение GL_ARB_vertex_buf fer_object. Далее будут рассмотрены примеры, позволяющие сравнить эффективность реализации в этих библиотеках работы с буфером вершин.

При аппаратном переключении страниц первый и второй параметры метода Present(RECT *pSrcRect, RECT *pDstRect. HWND hDstWindow, RGNDATA *) обязательно равны NULL. При переключении страниц при помощи копирования параметры метода позволяют выборочно копировать прямоугольные области страницы. Параметр pSrcRect задает прямоугольную область, которая будет копироваться. По сути дела, в этом параметре задается прямоугольник на BackBuffer в координатах буфера. Параметр pDstRect задает область-получатель в координатах рабочей области окна. Если оба рассмотренных параметра равны NULL, то активная страница отобразится на все окно. В параметре hDstWindow указывается дескриптор окна, в которое копируется страница. Если используется значение NULL, то копироваться участок будет в окно, которое было задано при инициализации. Последний параметр не используется и всегда равен NULL.


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