Автоматическое создание MIP-карт (Direct3D 9)

Теперь вы можете автоматически создать MIP-карту, которая представляет собой последовательность текстур, каждая из которых отфильтровывалась по своему разрешению. MIP-карты обычно используются для предоставления различных уровней детализации при отрисовке. При автоматическом создании MIP-карт в момент создания текстуры используется аппаратная фильтрация, поскольку MIP-карта хранится в видеопамяти.

Чтобы создать MIP-карту автоматически, задайте новый D3DUSAGE_AUTOGENMIPMAP использования перед вызовом CreateTexture. Создание подуровневого уровня с этого момента полностью прозрачно для приложения. Приложению доступен только верхний уровень текстуры; вложенные типы текстуры недоступны, так как они будут созданы только в том случае, если это необходимо для драйвера. В случаях, когда создание подуровневого уровня может занять много времени, используйте GenerateMipSubLevels , чтобы указать драйверу, что он должен создавать подобласти в момент, соответствующий приложению.

Фильтрация MIP-карты

SetAutoGenFilterType управляет качеством фильтрации во время автоматического создания. Изменение типа фильтра загрязняет вложенные значения MIP-карты и приводит к их повторному восстановлению. Используйте GetAutoGenFilterType , чтобы получить текущий тип фильтра. Тип фильтра по умолчанию — D3DTEXF_LINEAR. Если драйвер не поддерживает линейный фильтр, для типа фильтра будет задано значение D3DTEXF_POINT.

Эти методы не оказывают влияния, если текстура не создается с помощью D3DUSAGE_AUTOGENMIPMAP и не возвращается сбой. Все типы фильтров, поддерживаемые драйвером для обычной фильтрации текстур, поддерживаются для автоматического создания, за исключением D3DTEXF_NONE. Для каждого типа ресурса драйверы должны поддерживать все типы фильтров, указанные в соответствующей текстуре, CubeTexture и ограничениях фильтра volumetexture.

Чтобы проверка, какие типы фильтров поддерживаются, проверка, чтобы узнать, какие ограничения поддерживаются членами TextureFilterCaps и (или) CubeTextureFilterCaps D3DCAPS9.

Поддержка Mipmap

D3DUSAGE_AUTOGENMIPMAP является лишь подсказкой, и указание этого во время создания текстуры или при вызове CheckDeviceFormat не приведет к ошибке ни в одном из типов интерфейса драйвера устройства (DDI).

Вызов UpdateTexture является недопустимым, если источником является автоматически созданная MIP-карта, но назначение — нет. Источником может быть не автоматически созданная MIP-карта, а назначение может быть автоматически созданной MIP-картой. В этом случае обновляется только самый верхний уровень соответствия. Все остальные вложенные значения источника игнорируются. Аналогичным образом, при автоматическом создании источника и назначения обновляется только самый верхний уровень сопоставления. Подобласти из источника игнорируются, а целевые подобласти повторно создаются.

Чтобы проверка поддержку автоматического создания MIP-карт, проверка убедиться, что задано D3DCAPS2_CANAUTOGENMIPMAP. Если это так, вызовите CheckDeviceFormat с D3DUSAGE_AUTOGENMIPMAP. Если возвращаемое значение D3D_OK, MIP-карты гарантированно будут создаваться автоматически. Если возвращаемое значение равно D3DOK_NOAUTOGEN, это означает, что вызов создания завершится успешно, но не будет создано никаких MIP-карт.

Текстуры Direct3D