Функция Device->Clear( ) очищает не всю область Viewport, а лишь ее часть, заданную массивом прямоугольников. Первый параметр функции задает количество прямоугольников, а второй массив содержит адрес массива прямоугольников. Прямоугольник задается структурой D3DRECT, состоящей из четырех полей (xl, yl, х2, у2) типа 1 ong, в которые надо занести координаты углов в системе области Viewport. Таким образом, если нам необходимо схематично изобразить небо и землю, закрасив разными цветами верхнюю и нижнюю половину области вывода, можно дважды вызвать функцию очистки, как показано в листинге 23.6.

Листинг 23.6

D3DRECT Ms[2] -
{{0.0.VP.Width.VP.Height/2}.{0.VP.Height/2.VP.Width.VP.Height}}; Device->Clear(l. &Ms[0]. D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER.
D3DC0L0R_C0L0RVALUE(0.0.0.9.0.9.0). l.Of. 0); Device->Clear(l. &Ms[l]. D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER.
D3DC0L0R_C0L0RVALUE(0.0.0.9.0.0.0). l.Of. 0);

Функцию пришлось вызвать дважды из-за необходимости заливать прямоугольники разными цветами.

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

Если просмотр списка из сотен прямоугольников оказывается недостаточно эффективным, можно получить указатель на выделенную Z-буферу область памяти и самостоятельно реализовать заполнение буфера.

Методы BeginScene( ), EndScene( ) являются аналогами пары функций glBegin( ) и gl End( ), которые используются в OpenGL. Но если в OpenGL между этими функциями можно вызвать только функции задания координат вершин и их атрибутов, то DirectX позволяет еще использовать операции настройки конвейера. В данном


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