84 TUINT32 uiAdapterModeCount = pRenderer->
GetDirect3D()->GetAdapterModeCount( uiAdapterIndex );
86 for (
TUINT32 i = 0; i < uiAdapterModeCount; i++ )
88 auto pMode =
new Mode();
90 pMode->SetOwnerAdapter(
this );
91 pMode->SetModeIndex( i );
93 pRenderer->
GetDirect3D()->EnumAdapterModes( uiAdapterIndex, i, &pMode->GetD3DDisplayMode() );
95 for (
TUINT32 k = 0; k < uiNumSupportedDevices; k++ )
99 pDevice->SetOwnerMode( pMode );
100 pDevice->SetDeviceIndex( k );
103 HRESULT hRes = pRenderer->
GetDirect3D()->CheckDeviceType(
106 pMode->GetD3DDisplayMode().Format,
107 pMode->GetD3DDisplayMode().Format,
111 if ( SUCCEEDED( hRes ) )
113 auto& caps = pDevice->GetD3DCaps();
117 pDevice->m_bIsSoftware =
TTRUE;
120 if ( caps.Caps2 & D3DCAPS2_CANRENDERWINDOWED )
122 pDevice->m_bCanRenderWindowed =
TTRUE;
125 if ( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
127 pDevice->m_bSupportsTransformation =
TTRUE;
128 pDevice->m_bSupportsPureDevice = caps.DevCaps & D3DDEVCAPS_PUREDEVICE;
131 if ( caps.DevCaps & D3DDEVCAPS_NPATCHES )
133 pDevice->m_bSupportsNPatches =
TTRUE;
136 if ( pDevice->SupportsHardwareTransfomations() )
138 if ( pDevice->SupportsPureDevice() )
140 pDevice->m_eFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
144 pDevice->m_eFlags |= D3DCREATE_MIXED_VERTEXPROCESSING;
149 pDevice->m_eFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
156 HRESULT hCheck = pRenderer->
GetDirect3D()->CheckDeviceFormat(
159 pMode->GetD3DDisplayMode().Format,
160 D3DUSAGE_DEPTHSTENCIL,
165 if ( SUCCEEDED( hCheck ) )
167 HRESULT hMatch = pRenderer->
GetDirect3D()->CheckDepthStencilMatch(
170 pMode->GetD3DDisplayMode().Format,
171 pMode->GetD3DDisplayMode().Format,
175 if ( SUCCEEDED( hMatch ) )
177 pDevice->m_aSupportedDSFormats[ j ] =
TTRUE;