AutoPlay
AutoPlay - особенность Windows 95,и состоит в том что автоматически играет CD-ROM или звуковой CD, когда он вставлен в дисковод CD-ROM. Эта особенность не специфична для Windows 95 DirectX 2 SDK; любой программе на CD-ROM для получения эмблемы Windows 95 необходима AutoPlay.
Не были сделаны никакие изменения версии AutoPlay.
Блиттинг в и из поверхностей системной памяти
Некоторые платы дисплея имеют DMA аппаратные средства, которые позволяют им эффективно использовать блиттинг в и из поверхностей памяти системы. Структура DDCAPS была расширена, чтобы позволить драйверам сообщать эту возможность. Были добавлены Следующие члены :
DWORD dwSVBCaps
DWORD dwSVBCKeyCaps
DWORD
dwSVBFXCaps
DWORD
dwSVBRops [DD_ROP_SPACE]
DWORD
dwVSBCaps
DWORD
dwVSBCKeyCaps
DWORD
dwVSBFXCaps
DWORD
dwVSBRops [DD_ROP_SPACE]
DWORD
dwSSBCaps
DWORD
dwSSBCKeyCaps
DWORD
dwSSBFXCaps
DWORD
dwSSBRops [DD_ROP_SPACE]
SVB префикс указывает значения возможностей, которые связывают память системы с блиттингом в память дисплея.
VSB префикс указывает значения возможностей, которые связывают память дисплея с блиттингомв память дисплея.
SSB префикс указывает значения возможностей, которые связывают память системы с блиттингом в память системы.
Член DwSVBCaps соответствует члену dwCaps за исключением того, что описывает блиттинг-возможности драйвера дисплея для памяти системы. Аналогично, dwSVBCKeyCaps соответствует dwCKeyCaps, и dwSVBFXCaps соответствует dwFXCaps. Массив DwSVBRops описывает растровые операции, которые драйвер поддерживает для этого типа блиттингаt.
Эти члены имеют силу, если флажок DDCAPS_CANBLTSYSMEM установлен в dwCaps, указывая, что драйвер является способным к блиттингу в или из памяти системы.
Если поверхность памяти системы, используемая аппаратными средствами блиттинга не блокирована, DirectDraw автоматически вызовет IDirectDrawSurface2:: PageLock для поверхности, чтобы гарантировать, что память была блокирована.
C ++ и интерфейс COM
В C ++ программе интерфейс COM подобен абстрактному основному классу. То есть определяет набор сигнатур и семантики, но не реализацию, и никакие данные состояния не связаны с интерфейсом. В C ++ абстрактном основном классе все методы определены как « pure virtual « что означает, что они не имеют никакого кода, связанного с ними.
Чистые действительные функции C ++ и COM связываются с помощью устройства называемого vtable. Vtable содержит адреса всех функций, которые выполняют данный интерфейс. Если Вы хотите, чтобы программа или объект использовали эти функции, Вы должны использовать метод QueryInterface , чтобы проверить, что интерфейс существует, и получить указатель на этот интерфейс. То что ваша программа или объект фактически получает от объекта после посылки QueryInterface -это указатель на vtable, через который этот метод может вызывать методы интерфейса, связанные с объектом. Этот механизм полностью изолирует частные данные, используемые объектом и вызывающим процессом пользователя.
Другое подобие объектов COM с объектами C ++ - то, что первый параметр метода является именем интерфейса или класса, называемого в C ++ this. Так как объекты COM и объекты C ++ полностью двоично совместимы, транслятор обрабатывает интерфейсы COM подобно абстрактному классу C ++ и принимает тот же самый синтаксис. Это является результатом менее сложного кода. Например, параметр this в C ++ обрабатывается неявно через vtable, поскольку параметр не кодированный.
Callback
BOOL
WINAPI lpCallback(GUID FAR * lpGUID,
LPSTR
lpDriverDescription, LPSTR
lpDriverName,
LPVOID
lpContext);
Определенная прикладная программой процедура callback для функции DirectDrawEnumerate.
Возвращает DDENUMRET_OK, чтобы продолжить перечисление, или DDENUMRET_CANCEL, чтобы остановить.
lpGUID
Адрес уникального идентификатора объекта DirectDraw.
lpDriverDescription
Адрес строки, содержащей описание драйвера.
lpDriverName
Адрес строки, содержащей имя драйвера.
lpContext
Адрес caller-определенной структуры, которая будет передана к функции callback каждый раз, когда вызывается функция.
Callback функции
Большинство функциональных возможностей DirectDraw обеспечивается методами COM интерфейса. Этот раздел вносит в список функции callback, которые не выполнены как часть интерфейса COM.
CreateSurface
Возможности устройства GetCaps
Режимы дисплея EnumDisplayModes
Минимальный оверлейный коэффициент растяжения, умноженный
dwVidMemTotal
Общая сумма памяти дисплея.
dwVidMemFree
Количество свободной памяти дисплея.
dwMaxVisibleOverlays
Максимальное число видимых оверлеев.
dwCurrVisibleOverlays
Текущее число видимых оверлеев.
dwNumFourCCCodes
Число FourCC кодов.
dwAlignBoundarySrc
Исходное выравнивание прямоугольника.
dwAlignSizeSrc
Исходный размер прямоугольника в байтах.
dwAlignBoundaryDest
Выравнивание прямоугольника адресата.
dwAlignSizeDest
Размер прямоугольника адресата, в байтах.
dwAlignStrideAlign
Выравнивание шага.
dwRops[DD_ROP_SPACE]
Поддерживаемые растровые операции.
ddsCaps
Указывает на структуру DDSCAPS с общими возможностями.
dwMinOverlayStretch
Минимальный оверлейный коэффициент растяжения, умноженный на 1000. Например, 1.0 = 1000, 1.3 = 1300.
dwMaxOverlayStretch
Максимальный оверлейный коэффициент растяжения, умноженный на 1000. Например, 1.0 = 1000, 1.3 = 1300.
dwMinLiveVideoStretch
Минимальный коэффициент растяжения видео, умноженный на 1000. Например, 1.0 = 1000, 1.3 = 1300.
dwMaxLiveVideoStretch
Максимальный коэффициент растяжения видео, умноженный на 1000. Например, 1.0 = 1000, 1.3 = 1300.
dwMinHwCodecStretch
Минимальный коэффициент растяжения codec, умноженный на 1000. Например, 1.0 = 1000, 1.3 = 1300.
dwMaxHwCodecStretch
Максимальный коэффициент растяжения codec, умноженный на 1000. Например, 1.0 = 1000, 1.3 = 1300.
dwReserved1,dwReserved2 ,dwReserved3
Резервируется для будущего использования.
dwSVBCaps
Определяет драйвер-специфические возможности для блиттинга из памяти системы в видеопамять.
dwSVBCKeyCaps
Определяет color key возможности драйвера для блиттинга из памяти системы в видеопамять.
dwSVBFXCaps
Определяет драйвер FX возможности для блиттинга из памяти системы в видеопамять.
dwSVBRops[DD_ROP_SPACE]
Определяет растровые операции для блиттинга из памяти системы в видеопамять
dwVSBCaps
Определяет драйвер-специфические возможности для блиттинга из памяти дисплея память системы.
dwVSBCKeyCaps
dwVSBFXCaps
Определяет драйвер FX возможности для блиттинга из памяти дисплея в память системы.
dwVSBRops[DD_ROP_SPACE]
Поддерживает растровые операции для блиттинга из памяти дисплея в память системы.
dwSSBCaps
Определяет драйвер-специфические возможности для блиттинга из памяти системы в память системы.
dwSSBCKeyCaps
Определяет color key возможности драйвера для блиттинга из памяти системы в память системы.
dwSSBCFXCaps
Определяет драйвер FX возможности для блиттинга из памяти системы в память системы.
dwSSBRops[DD_ROP_SPACE]
Растровые операции для блиттинга из памяти системы в память системы.
dwReserved4, dwReserved5, dwReserved6
Резервируется для будущего использования.
Значения для dw ... BitDepths членов (dwAlphaBltConstBitDepths, dwAlphaBltPixelBitDepths, dwAlphBltSurfaceBitDepths, и так далее):
DDBD_1 1 Бит на пиксель.
DDBD_2 2 Бита на пиксель.
DDBD_4 4 Бита на пиксель.
DDBD_8 8 Битов на пиксель.
DDBD_16 16 Битов на пиксель.
DDBD_24 24 Битов на пиксель.
DDBD_32 32 Битов на пиксель.
Определяет color key возможности драйвера дляблиттинга из памяти дисплея в память системы.
DDBLT_ALPHADEST
Использует или альфа информацию в формате пикселя или альфа поверхности канала, присоединенной к поверхности адресата как альфа канал для этого блиттинга.
Использует альфа информацию или в формате пикселя или в фомате поверхности , присоединенной к поверхности адресата как альфа канал для этого блиттинга.
DDBLT_ALPHADESTCONSTOVERRIDE
Использует член dwAlphaDestConst в структуре DDBLTFX как альфа канал для поверхности адресата этого блиттинга.
Использует dwAlphaDestConst член в структуре DDBLTFX как альфа канал для поверхности адресата этого блиттинга .
DDBLT_ALPHADESTNEG
Суффикс NEG указывает, что поверхность адресата становится более яркой( увеличение на значение альфа (0 непрозрачный)).
DDBLT_ALPHADESTSURFACEOVERRIDE
Использует lpDDSAlphaDest член в структуре DDBLTFX как альфа канал для адресата.
DDBLT_ALPHAEDGEBLEND
Использует dwAlphaEdgeBlend член в структуре DDBLTFX как альфа канал для граней изображения, которые ограничивают цвета color key.
DDBLT_ALPHASRC
Использует или альфа информацию в формате пикселя или альфа поверхности канала, присоединенной к исходной поверхности как альфа канал для этого блиттинга.
DDBLT_ALPHASRCCONSTOVERRIDE
Использует dwAlphaSrcConst член в структуре DDBLTFX как альфа канал для источника этого блиттинга.
DDBLT_ALPHASRCNEG
Суффикс NEG указывает, что исходная поверхность становится более яркой( увеличение на значение альфа (0 непрозрачный)).
DDBLT_ALPHASRCSURFACEOVERRIDE
Использует lpDDSAlphaSrc член в структуре DDBLTFX как альфа канал для источника.
DDBLT_ASYNC
Выполняет этот блиттинг асинхронно через FIFO в полученном порядке. Если никакой участок памяти не доступен в FIFO аппаратных средств происходит сбой обращения.
DDBLT_COLORFILL
Использует dwFillColor член в структуре DDBLTFX как RGB цвет, который заполняет прямоугольник адресата на поверхности адресата.
DDBLT_DDFX
Использует dwDDFX член в структуре DDBLTFX, чтобы определить эффекты, которые использовать для блиттинга.
DDBLT_DDROPS
Использует dwDDROPS член в структуре DDBLTFX, чтобы определить растровые операции, которые не являются частью Win32 API.
DDBLT_DEPTHFILL
Использует dwFillDepth член в структуре DDBLTFX как значение глубины , чтобы заполнить прямоугольник адресата на поверхности z-буфера адресата.
DDBLT_KEYDEST
Использует color key, связанный с поверхностью адресата.
DDBLT_KEYDESTOVERRIDE
Использует dckDestColorkey член в структуре DDBLTFX как color key для поверхности адресата.
DDBLT_KEYSRC
Использует color key), связанный с исходной поверхностью.
DDBLT_KEYSRCOVERRIDE
Использует dckSrcColorkey член в структуре DDBLTFX как color key для исходной поверхности.
DDBLT_ROP
Использует dwROP член в структуре DDBLTFX для растровой операции. Эти ROP такие же, как и в Win32 API.
DDBLT_ROTATIONANGLE
Использует dwRotationAngle член в структуре DDBLTFX как угол (определенный как 1/100), чтобы вращать поверхность.
DDBLT_WAIT
Откладывает значение возврата DDERR_WASSTILLDRAWING, если блиттер занят. Возвращается как только блиттинг произведен или происходит другая ошибка.
DDBLT_ZBUFFER
Выполняет z -буферизированный блиттинг с использованием z-буферов, присоединенных к источнику и поверхностям адресата и члену dwZBufferOpCode в структуре DDBLTFX как z-буфер кода операции.
DDBLT_ZBUFFERDESTCONSTOVERRIDE
Выполняет z-буферизированный блиттинг с использованием dwZDestConst и dwZBufferOpCode членов в структуре DDBLTFX как z-буфера и z-буфера кода операции, соответственно, для адресата.
DDBLT_ZBUFFERDESTOVERRIDE
Выполняет z-буферизированный блиттинг с использованием lpDDSZBuffeDestr и dwZBufferOpCode членов в структуре DDBLTFX как z-буфера и z-буфера кода операции, соответственно, для адресата.
DDBLT_ZBUFFERSRCCONSTOVERRIDE
Выполняет z-буферизированный блиттинг с использованием dwZSrcConst и dwZBufferOpCode членов в структуре DDBLTFX как z-буфера и z-буфера кода операции, соответственно, для источника.
DDBLT_ZBUFFERSRCOVERRIDE
Выполняет z-буферизированный блиттинг с использованием lpDDSZBufferSrc и dwZBufferOpCode членов в структуре DDBLTFX как z-буфера и z-буфера кода операции, соответственно, для источника.
lpDDBltFx
См. структуру DDBLTFX.
Этот метод производит синхронный или асинхронный блиттинг, из памяти дисплея в память дисплея, из памяти дисплея в память системы, из памяти системы в память дисплея и из памяти системы в память системы. Блиттинг может выполняться, используя z-информацию, альфа информацию, исходные color key и color key адресата. Растяжение или сжатие будет выполняться автоматически если прямоугольники источника и адресата имеют разные размеры.
Метод IDirectDrawSurface:: Blt обычно немедленно возвращается с ошибкой, если занят блиттер. Флажок DDBLT_WAIT может изменять это поведение так, чтобы метод ждал, пока не произойдет блиттинг или возникнет другая ошибка.
DDBLTFAST_DESTCOLORKEY
Прозрачный блиттинг, который использует color key адресата.
DDBLTFAST_SRCCOLORKEY
Прозрачный блиттинг, который использует color key источника.
DDBLTFAST_WAIT
Откладывает сообщение DDERR_WASSTILLDRAWING, если блиттер занят. Возвращатся, как только блиттинг произошел или возникла другая ошибка.
Этот метод работает только в экранной поверхности памяти и не может отсекать во время операции. Программная реализация IDirectDrawSurface:: BltFast - на 10 процентов быстрее чем IDirectDrawSurface:: Blt. Однако если используются аппаратные средства дисплея, то не имеется никакого различия в быстродействии.
Метод IDirectDrawSurface:: BltFast обычно немедленно возвращается с ошибкой, если блиттер занят. Флажок DDBLTFAST_WAIT может использоваться, чтобы изменить это поведение так, чтобы этот метод не возвратился, до выполнения боиттинга или возникновения другой ошибки.
DDBLTFX_ARITHSTRETCHY
Использует арифметическое растяжение по y-оси для этого блиттинга.
DDBLTFX_MIRRORLEFTRIGHT
Направляет поверхность на y-оси. Этот блиттинг зеркально отражает поверхность слева направо.
DDBLTFX_MIRRORUPDOWN
Направляет поверхность на x-оси. Этот блиттинга зеркально отражает поверхность сверху вниз.
DDBLTFX_NOTEARING
Планирует этот блиттинг, чтобы избежать разрывов.
Вращает поверхностьна 90 градусов по часовой стрелке.
Вращает поверхность на 180 градусов
Вращает поверхность на 180 градусов по часовой стрелке.
Вращает поверхность на 270 градусов
Вращает поверхность на 270 градусов по часовой стрелке.
DDBLTFX_ZBUFFERBASEDEST
Добавляет член dwZBufferBaseDest к каждому из исходных z-означений перед сравнением их с z-значениями адресата в течение этого блиттинга.
DDBLTFX_ZBUFFERRANGE
Использует dwZBufferLow и dwZBufferHigh как значения диапазона, чтобы определить ограничения, при копировании исходной поверхности в течение этого блиттинга.
dwROP
Определяет Win32 растровые операции.
dwDDROP
Определяет DirectDraw растровые операции.
dwRotationAngle
Угол вращения для блиттинга.
dwZBufferOpCode
Z-буферы сравниваются.
dwZBufferLow
Ограничение z-буфера снизу.
dwZBufferHigh
Ограничение z-буфера сверху.
dwZBufferBaseDest
Значение базы z-буфера адресата.
dwZDestConstBitDepth
Разрядная глубина z-константы адресата.
dwZDestConst
Константа, используемая как z-буфер адресата.
lpDDSZBufferDest
Поверхность, используемая как z-буфер адресата.
dwZSrcConstBitDepth
Разрядная глубина исходной z-константы.
dwZSrcConst
Константа, используемая как z-буфер источника.
lpDDSZBufferSrc
Поверхность, используемая как z-буфер источника.
dwAlphaEdgeBlend
Альфа, используемая для смешивания краев.
dwAlphaEdgeBlendBitDepth
Разрядная глубина константы для альфа смешивания.
dwReserved
Резервируется для будущего использования.
dwAlphaDestConstBitDepth
Разрядная глубина константы альфа адресата.
dwAlphaDestConst
Константа, используемая как альфа канал адресата.
lpDDSAlphaDest
Поверхность, используемая как альфа канал адресата.
dwAlphaSrcConstBitDepth
Разрядная глубина исходной альфа константы.
dwAlphaSrcConst
Константа, используемая как альфа канал источника.
lpDDSAlphaSrc
Поверхность, используемая как альфа канал источника.
dwFillColor
Цвет, используемый, чтобы заполнить поверхность, когда определен DDBLT_COLORFILL. Это значение может быть или RGB или индекс палитры, в зависимости от поверхностного типа.
dwFillDepth
Значение глубины для z-буфера.
lpDDSPattern
Поверхность, чтобы использовать как образец(pattern). Образец может использоваться в некоторых операциях определен, которые объединяют источник и адресата.
ddckDestColorkey
Color key адресата отменяется.
ddckSrcColorkey
Отмена исходного color key.
DDCAPS_3D
Указывает, что аппаратные средства дисплея имеют 3D ускорение.
DDCAPS_ALIGNBOUNDARYDEST
Указывает, что DirectDraw будет поддерживать только те исходные прямоугольники, которые выравнены с x-осью и DDCAPS.dwAlignBoundaryDest границами поверхности.
DDCAPS_ALIGNBOUNDARYSRC
Указывает, что DirectDraw будет поддерживать только те исходные прямоугольники, которые выравнены с x-осью и DDCAPS.dwAlignBoundarySrc границами поверхности.
DDCAPS_ALIGNSIZEDEST
Указывает, что DirectDraw будет поддерживать только те исходные прямоугольники чей размер x-оси, в байтах, пропорционален- DDCAPS.dwAlignSizeDest.
DDCAPS_ALIGNSIZESRC
Указывает, что DirectDraw будет поддерживать только те исходные прямоугольники чей размер x-оси, в байтах, пропорционален DDCAPS.dwAlignSizeSrc.
DDCAPS_ALIGNSTRIDE
Указывает, что DirectDraw создаст поверхности в памяти дисплея, которые имеют выравнивание с шагом равным DDCAPS.dwAlignStrideAlign.
DDCAPS_ALPHA
Указывает, что аппаратные средства дисплея поддерживают альфа канал в течение операций блиттинга.