Нахождение доступных режимов
"Теория 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>
|
 |
 |
|