Шаг 12 - Описание перечисляемого типа D3DSWAPEFFECT

Определяет эффект обмена.

typedef enum _D3DSWAPEFFECT {
	D3DSWAPEFFECT_DISCARD = 1,
	D3DSWAPEFFECT_FLIP = 2,
	D3DSWAPEFFECT_COPY = 3,
	D3DSWAPEFFECT_COPY_VSYNC = 4,
	D3DSWAPEFFECT_FORCE_DWORD = 0xFFFFFFFF
} D3DSWAPEFFECT;

Описание параметров

D3DSWAPEFFECT_DISCARD - когда обмен буферов создан при помощи флажков D3DSWAPEFFECT_FLIP, D3DSWAPEFFECT_COPY или D3DSWAPEFFECT_COPY_VSYNC, то вовремя выполнения IDirect3DDevice8::Present, содержание задних буферов не будет затронуто. К сожалению, это отнимает некоторую видеопамять или ресурсы обработки, особенно для оконного режима. Флажок D3DSWAPEFFECT_DISCARD эффект обмена позволяет избежать этих неприятностей и драйвер выбирает наиболее эффективный способ отображения нескольких буферов. Также это единственный эффективный обмен, который можно совместно использовать с D3DMULTISAMPLE_NONE входящий в тип MultiSampleType структуры D3DPRESENT_PARAMETERS.

Обмен D3DSWAPEFFECT_DISCARD, как и D3DSWAPEFFECT_FLIP, позволяет подключить больше чем один задний буфер, к которому можно обратиться при помощи IDirect3DDevice8::GetBackBuffer. Обмен происходит в порядке очереди, индекс 0 означает, что данный буфер будет показан следующей функцией Present и затем отвергнут, как только его покажут.

Для полноэкранного обмена, значение применяют FullScreen_PresentationInterval входяший в структуру D3DPRESENT_PARAMETERS, когда создали устройство или обмен буферов. Если это значение не D3DPRESENT_INTERVAL_IMMEDIATE, отображение на экран будет синхронизировано с вертикальным лучом монитора. Обмен буферов оконного режима будет осуществляться немедленно за счет нескольких копий.

D3DSWAPEFFECT_FLIP - этот обмен буферов влючает в себя несколько задних буферов, которые отображаются последовательно (по кругу). Задние буфера расчитываются последовательно от 0 до N-1, где N - общее количество задних буферов. Нулевой буфер - это буфер, который будет отображен в следующий раз. Когда вызывается функция Present, передний буфер становится задним (N-1), в то время как задний буфер 0 становится передним.

Для полноэкранного обмена, значение применяют FullScreen_PresentationInterval входяший в структуру D3DPRESENT_PARAMETERS, когда создали устройство или обмен буферов. Если это значение не D3DPRESENT_INTERVAL_IMMEDIATE, отображение на экран будет синхронизировано с вертикальным лучом монитора. Обмен буферов оконного режима будет осуществляться немедленно за счет нескольких копий.

D3DSWAPEFFECT_COPY - этот обмен буферов содержит только один задний буфер.

Требования

Заголовки: объявить D3d8types.h.

Примеры

См. "Шаг 2 - Создание Direct3D в оконном режиме".


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Хавов Евгений Валерьевич - 12.08.2002