Как проверить наличие 32-битного z-буфера с помощью Managed Direct3D? - PullRequest
1 голос
/ 05 февраля 2010

Я понимаю, что звонок на Manager::CheckDepthStencilMatch должен дать мне ответ, но до сих пор я не смог собрать кусочки, необходимые для эффективного вызова.

В частности, мне нужно получить значения для аргументов adapterFormat и renderTargetFormat. Я не указываю какой-либо конкретный формат при создании устройства, поэтому мне нужен способ получить значения по умолчанию / текущие значения «Формат».

1 Ответ

1 голос
/ 05 февраля 2010

-

D3D::DepthFormat GetDepthFormat(){
    D3D::AdapterInformation ^adapter = D3D::Manager::Adapters->Default;
    D3D::DepthFormat depthFormat = D3D::DepthFormat::D32;
    if(!D3D::Manager::CheckDepthStencilMatch(0,
        D3D::DeviceType::Hardware, adapter->CurrentDisplayMode.Format,
        adapter->CurrentDisplayMode.Format, depthFormat)){

        depthFormat = D3D::DepthFormat::D16;
        if(!D3D::Manager::CheckDepthStencilMatch(0,
            D3D::DeviceType::Hardware, adapter->CurrentDisplayMode.Format,
            adapter->CurrentDisplayMode.Format, depthFormat)){

            throw gcnew Exception(L"Your hardware needs to be upgraded.");
        }
    }

    return depthFormat;
}
...