6 февраля 2010 в 20:42
Уроки Direct3D - 2.3. Caps. Проверка совместимости
До сих пор мы применяли в основном стандартные функции Direct3D, совместимые практически с любыми современными видеоадаптерами. И только в предыдущем проекте мы столкнулись с возможной несовместимостью. Возникает вопрос, а можно ли написать программу так, чтобы она узнавала «на месте» возможности оборудования и автоматически выбирала наиболее оптимальный режим работы, либо отказывалась работать при необходимости? Можно. Для этого в DirectX имеется структура Caps, содержащая всю необходимую информацию об оборудовании. Пользоваться ей очень просто. Добавьте в модуль modDX общую переменную типа D3DCAPS8:
Public Caps As D3DCAPS8
А в процедуру D3DInit строку для ее заполнения:
d3d.GetDeviceCaps D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Caps
Теперь мы можем узнавать необходимые нам сведения. Например, в предыдущем проекте можно таким образом выбрать уровень анизотропии:
If Caps.MaxAnisotropy >= 4 Then d3dDevice.SetTextureStageState 0, D3DTSS_MINFILTER, D3DTEXF_ANISOTROPIC d3dDevice.SetTextureStageState 0, D3DTSS_MAXANISOTROPY, 4 ElseIf Caps.MaxAnisotropy >= 2 Then d3dDevice.SetTextureStageState 0, D3DTSS_MINFILTER, D3DTEXF_ANISOTROPIC d3dDevice.SetTextureStageState 0, D3DTSS_MAXANISOTROPY, 2 Else d3dDevice.SetTextureStageState 0, D3DTSS_MINFILTER, D3DTEXF_LINEAR End If
Можно также предоставить возможность пользователю программы самому выбрать режим фильтрации из возможных вариантов. Полный список всех полей Caps имеется в DirectX SDK. Мы еще не раз будем возвращаться к этой полезной структуре.
комментарии отсутствуют
авторизуйтесь