Поделиться через


Создание сжатых буферов и декодирование целевых объектов отрисовки

Среда исполнения Microsoft Direct3D вызывает функцию пользовательского драйвера отображения CreateResource для создания сжатых буферов и целевых объектов рендеринга для декодирования.

Каждый сжатый тип буфера имеет собственный формат поверхности, а также специальный флаг, указывающий, что поверхность, созданная средой выполнения, содержит сжатые сведения буфера для ускорения декодировки видео. Драйвер отображения в пользовательском режиме решает создать сжатый буфер, если в битовом поле флага DecodeCompressedBuffer в элементе Flags структуры D3DDDIARG_CREATERESOURCE, на которую указывает параметр pResource функции CreateResource, установлен соответствующий флаг. Драйвер отображения в пользовательском режиме определяет тип сжатого буфера, который необходимо создать, по значению формата в члене Format элемента D3DDDIARG_CREATERESOURCE. Определены следующие форматы:

D3DDDIFMT_PICTUREPARAMSDATA       = 150
D3DDDIFMT_MACROBLOCKDATA          = 151
D3DDDIFMT_RESIDUALDIFFERENCEDATA  = 152
D3DDDIFMT_DEBLOCKINGDATA          = 153
D3DDDIFMT_INVERSEQUANTIZATIONDATA = 154
D3DDDIFMT_SLICECONTROLDATA        = 155
D3DDDIFMT_BITSTREAMDATA           = 156

Среда выполнения Direct3D создает каждый целевой объект декодирования отрисовки независимо в вызове функции драйвера отображения в режиме пользователя CreateResource. Каждая из целевых объектов ссылается как на подресурсный индекс одного ресурса. Драйвер отображения в пользовательском режиме определяет необходимость создания декодирующей целевой поверхности для отрисовки, если в битовом поле DecodeRenderTarget установлен флаг в члене Flags структуры D3DDDIARG_CREATERESOURCE.