netlib.narod.ru< Назад | Оглавление | Далее >

Работа с портом просмотра

Время от времени вам может потребоваться выполнять визуализацию в небольшие области экрана, что-то вроде визуализации в небольшое окно, расположенное внутри главного окна приложения. Главный порт просмотра обычно охватывает весь экран, но когда необходимо, вы можете изменить размер порта просмотра, чтобы он охватывал небольшую часть экрана (например, для визуализации экрана радара, зеркала заднего вида или других ситуаций «картинка в картинке»).

Чтобы установить порт просмотра вы сначала заполняете структуру D3DVIEWPORT9, содержащую координаты и размеры нового порта просмотра, который вы намереваетесь использовать:

typedef struct _D3DVIEWPORT9 {
    DWORD X;      // Левая координата X порта просмотра
    DWORD Y;      // Верхняя координата Y порта просмотра
    DWORD Width;  // Ширина порта просмотра
    DWORD Height; // Высота порта просмотра
    float MinZ;   // 0.0
    float MaxZ;   // 1.0
} D3DVIEWPORT9;

После того, как структура заполнена необходимыми данными, вы сообщаете Direct3D, что надо использовать новый порт просмотра, вызвав функцию ID3DDevice9::SetViewport, как показано в следующем фрагменте кода:

// pD3DDevice = ранее инициализированный объект устройства

// Создаем порт просмотра
D3DVIEWPORT9 d3dvp = { 0,0, 100, 100, 0.0f, 1.0f };

// Устанавливаем новый порт просмотра
pD3DDevice->SetViewport(&d3dvp);

С этого момента (после вызова SetViewport) вся графика будет визуализироваться в определенное вами окно порта просмотра. После того, как закончите работать с новым портом просмотра, восстановите старый. Чтобы получить параметры старого порта просмотра для их последующего восстановления вызовите функцию ID3DDevice9::GetViewport, как показано в следующем коде:

// pD3DDevice = ранее инициализированный объект устройства
D3DVIEWPORT9 OldViewport;

// Получаем параметры старого порта просмотра
pD3DDevice->GetViewport (&OldViewport);

// .. меняем параметры порта просмотра, как необходимо

// Восстанавливаем старый порт просмотра
pD3DDevice->SetViewport (&OldViewport);

netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz