Visual Basic - мастерская разработчика
Библиотеки

DirectX

Обзоры
DirectDraw
Direct3D
DirectX Audio
DirectPlay
DirectInput
Fido Topics
SourceCode
Tools&Libs

OpenGL

Статьи и учебники
Fido Topics
SourceCode
Tools&Libs

Архив по Glide

Движки

Обзоры
Учебники
SourceCode
Downloads

Создание игр

Ваши игры

Обзорные статьи
Учебники
Fido Topics
SourceCode
Download

Stuff

Программер-Чат

Псевдо-FTP
Disclaimer
Оффтопик

 

Нахождение доступных режимов

"Теория DirectDraw"


Из-за того, что видеооборудование бывает разное, не все устройства поддерживают все видеорежимы. Для определения доступных режимов на конкретно взятой машине, вызовите метод IDirectDraw7::GetDisplayModesEnum (DirectDraw7.GetDisplayModesEnum) Он возвращает объект DirectDrawEnumModes, который может потом использоваться для получения описания поддерживаемых режимов.

Вы можете получить описание всех поддерживаемых режимов или получить подтверждение или опровержение о работе одного, указанного вами режима, путем установки соответствующих флагов при вызове GetDisplayModesEnum.

Первый параметр метода - флаги,- контролируют дополнительный опции для метода. В большинстве случаев их игнорируют, указывая флаг DDEDM_DEFAULT. Второй параметр - ddsd. В нем передается структура DDSURFACEDESC2, которая описывает некий режим для подтверждения его работы. Если параметр установить в Nothing, будут перечислены все режимы.

После того, как вы получили объект DirectDrawEnumModes, вы можете извлекать из него полезную информацию. Методом DirectDrawEnumModes.GetCount можно получить количество поддерживаемых режимов. Затем вы можете вызывать метод DirectDrawEnumModes.GetItem для получения описания одного режима дисплея из набора, который хранится в DirectDrawEnumModes.

После вызова GetCount, информация о режиме находится в структуре DDSURFACEDESC2. Легко получить информацию о размерах экрана из членов этого типа lWidth и lHeight, а также о глубине цвета из ddpfPixelFormat. ddpfPixelFormat - это тоже тип - DDPIXELFORMAT, в нем содержится информация о глубине цвета режима. Этот тип несет в себе информацию о количестве битов на пиксел и говорит, использует или нет режим палитру. Если член lFlags содержит флаг DDPF_PALETTEINDEXED1, DDPF_PALETTEINDEXED2, DDPF_PALETTEINDEXED4, или DDPF_PALETTEINDEXED8, тогда глубина цвета режима 1, 2, 4 или 8 битов, и каждый пиксел - это индекс в установленной палитре. Если lFlags содержит DDPF_RGB, тогда режим дисплея не палетизированный и глубина цвета описана в члене lRGBBitCount типа DDPIXELFORMAT.

Posted: 23.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>

 


Проект
Создание Народного Учебника по OpenGL

Участвовать!
Поиск
Найдите статью или файл:


Рассылка
Новости сайта
La Vision в вашем почтовом ящике








Программирование на С++ Delphi и Паскаль
Центр демо-искусства в России