Режимы Mode X и Mode 13
"Теория DirectDraw"
DirectDraw поддерживает режимы экрана Mode X и Mode 13.
Mode 13 - это линейный, не поддерживающий флиппинг, палетизированный режим
320x200x8, получивший свое название по своему шестнадцатиричному номеру 13 в
BIOS.
DirectDraw может дать приложению в этом режиме прямой доступ к буферу кадра.
В отличие от Mode X вы можете вызывать методы IDirectDrawSurface7::Lock (DirectDrawSurface7.Lock),
Blt и BltFast, для прямого доступа к главной поверхности.
Mode X - это гибрид, получившийся из стандартного VGA режима Mode 13. Этот
режим позволяет использовать до 256 килобайт памяти (в отличии от 64 килобайт
Mode 13). DirectDraw позволяет работать в двух режимах Mode X (320x200x8 и 320x240x8)
для всех видеокарт.
Некоторые видеокарты также поддерживают линейные режимы низкого разрешения.
В этих режимах главная поверхность может быть блокирована и иметь возможность
прямого доступа к ней. Это невозможно в режиме Mode X.
Режим Mode X доступен только если приложение использует флаги DDSCL_ALLOWMODEX,
DDSCL_FULLSCREEN, и DDSCL_EXCLUSIVE, когда устанавлиевается cooperative level.
Если флаг DDSCL_ALLOWMODEX не указан, IDirectDraw7::GetDisplayModesEnum (DirectDraw7.GetDisplayModesEnum)
не будет находить Mode X, а IDirectDraw7::SetDisplayMode (DirectDraw7.SetDisplayMode)
вообще работать не будет. В режиме Mode X вы не можете использовать методы IDirectDrawSurface7::Lock
(DirectDrawSurface7.Lock) или IDirectDrawSurface7::Blt (DirectDrawSurface7.Blt).
Также вы не можете использовать метод IDirectDrawSurface7::GetDC (DirectDrawSurface7.GetDC)
для главной поверхности или GDI с экранным DC.
Mode X обозначается флагом DDSCAPS_MODEX в типе DDSCAPS2, который является
частью типа DDSURFACEDESC2, возвращаемым функцией IDirectDrawSurface7::GetCaps
(DirectDrawSurface7.GetCaps) и DirectDrawEnumModes.
Posted: 23.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>
|