📄 dxutsettingsdlg.cpp
字号:
if( IsDeviceClip() )
g_DeviceSettings.pp.Flags |= D3DPRESENTFLAG_DEVICECLIP;
else
g_DeviceSettings.pp.Flags &= ~D3DPRESENTFLAG_DEVICECLIP;
return S_OK;
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddAdapter( const WCHAR* strDescription, UINT iAdapter )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER );
if( !pComboBox->ContainsItem( strDescription ) )
pComboBox->AddItem( strDescription, ULongToPtr(iAdapter) );
}
//-------------------------------------------------------------------------------------
UINT CD3DSettingsDlg::GetSelectedAdapter()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER );
return PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddDeviceType( D3DDEVTYPE devType )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEVICE_TYPE );
if( !pComboBox->ContainsItem( DXUTD3DDeviceTypeToString(devType) ) )
pComboBox->AddItem( DXUTD3DDeviceTypeToString(devType), ULongToPtr(devType) );
}
//-------------------------------------------------------------------------------------
D3DDEVTYPE CD3DSettingsDlg::GetSelectedDeviceType()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEVICE_TYPE );
return (D3DDEVTYPE) PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::SetWindowed( bool bWindowed )
{
CDXUTRadioButton* pRadioButton = m_Dialog.GetRadioButton( DXUTSETTINGSDLG_WINDOWED );
pRadioButton->SetChecked( bWindowed );
pRadioButton = m_Dialog.GetRadioButton( DXUTSETTINGSDLG_FULLSCREEN );
pRadioButton->SetChecked( !bWindowed );
}
//-------------------------------------------------------------------------------------
bool CD3DSettingsDlg::IsWindowed()
{
CDXUTRadioButton* pRadioButton = m_Dialog.GetRadioButton( DXUTSETTINGSDLG_WINDOWED );
return pRadioButton->GetChecked();
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddAdapterFormat( D3DFORMAT format )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER_FORMAT );
if( !pComboBox->ContainsItem( DXUTD3DFormatToString(format, TRUE) ) )
pComboBox->AddItem( DXUTD3DFormatToString(format, TRUE), ULongToPtr( format ) );
}
//-------------------------------------------------------------------------------------
D3DFORMAT CD3DSettingsDlg::GetSelectedAdapterFormat()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_ADAPTER_FORMAT );
return (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddResolution( DWORD dwWidth, DWORD dwHeight )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_RESOLUTION );
DWORD dwResolutionData;
WCHAR strResolution[50];
dwResolutionData = MAKELONG( dwWidth, dwHeight );
StringCchPrintf( strResolution, 50, L"%d by %d", dwWidth, dwHeight );
if( !pComboBox->ContainsItem( strResolution ) )
pComboBox->AddItem( strResolution, ULongToPtr( dwResolutionData ) );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::GetSelectedResolution( DWORD* pdwWidth, DWORD* pdwHeight )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_RESOLUTION );
DWORD dwResolution = PtrToUlong( pComboBox->GetSelectedData() );
*pdwWidth = LOWORD( dwResolution );
*pdwHeight = HIWORD( dwResolution );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddRefreshRate( DWORD dwRate )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_REFRESH_RATE );
WCHAR strRefreshRate[50];
if( dwRate == 0 )
StringCchCopy( strRefreshRate, 50, L"Default Rate" );
else
StringCchPrintf( strRefreshRate, 50, L"%d Hz", dwRate );
if( !pComboBox->ContainsItem( strRefreshRate ) )
pComboBox->AddItem( strRefreshRate, ULongToPtr(dwRate) );
}
//-------------------------------------------------------------------------------------
DWORD CD3DSettingsDlg::GetSelectedRefreshRate()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_REFRESH_RATE );
return PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddBackBufferFormat( D3DFORMAT format )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_BACK_BUFFER_FORMAT );
if( !pComboBox->ContainsItem( DXUTD3DFormatToString(format, TRUE) ) )
pComboBox->AddItem( DXUTD3DFormatToString(format, TRUE), ULongToPtr( format ) );
}
//-------------------------------------------------------------------------------------
D3DFORMAT CD3DSettingsDlg::GetSelectedBackBufferFormat()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_BACK_BUFFER_FORMAT );
return (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddDepthStencilBufferFormat( D3DFORMAT format )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEPTH_STENCIL );
if( !pComboBox->ContainsItem( DXUTD3DFormatToString(format, TRUE) ) )
pComboBox->AddItem( DXUTD3DFormatToString(format, TRUE), ULongToPtr(format) );
}
//-------------------------------------------------------------------------------------
D3DFORMAT CD3DSettingsDlg::GetSelectedDepthStencilBufferFormat()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_DEPTH_STENCIL );
return (D3DFORMAT) PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddMultisampleType( D3DMULTISAMPLE_TYPE type )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_TYPE );
if( !pComboBox->ContainsItem( DXUTMultisampleTypeToString(type) ) )
pComboBox->AddItem( DXUTMultisampleTypeToString(type), ULongToPtr(type) );
}
//-------------------------------------------------------------------------------------
D3DMULTISAMPLE_TYPE CD3DSettingsDlg::GetSelectedMultisampleType()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_TYPE );
return (D3DMULTISAMPLE_TYPE) PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddMultisampleQuality( DWORD dwQuality )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_QUALITY );
WCHAR strQuality[50];
StringCchPrintf( strQuality, 50, L"%d", dwQuality );
if( !pComboBox->ContainsItem( strQuality ) )
pComboBox->AddItem( strQuality, ULongToPtr(dwQuality) );
}
//-------------------------------------------------------------------------------------
DWORD CD3DSettingsDlg::GetSelectedMultisampleQuality()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_MULTISAMPLE_QUALITY );
return PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::AddVertexProcessingType( DWORD dwType )
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_VERTEX_PROCESSING );
if( !pComboBox->ContainsItem( DXUTVertexProcessingTypeToString(dwType) ) )
pComboBox->AddItem( DXUTVertexProcessingTypeToString(dwType), ULongToPtr(dwType) );
}
//-------------------------------------------------------------------------------------
DWORD CD3DSettingsDlg::GetSelectedVertexProcessingType()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_VERTEX_PROCESSING );
return PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
DWORD CD3DSettingsDlg::GetSelectedPresentInterval()
{
CDXUTComboBox* pComboBox = m_Dialog.GetComboBox( DXUTSETTINGSDLG_PRESENT_INTERVAL );
return PtrToUlong( pComboBox->GetSelectedData() );
}
//-------------------------------------------------------------------------------------
void CD3DSettingsDlg::SetDeviceClip( bool bDeviceClip )
{
CDXUTCheckBox* pCheckBox = m_Dialog.GetCheckBox( DXUTSETTINGSDLG_DEVICECLIP );
pCheckBox->SetChecked( bDeviceClip );
}
//-------------------------------------------------------------------------------------
bool CD3DSettingsDlg::IsDeviceClip()
{
CDXUTCheckBox* pCheckBox = m_Dialog.GetCheckBox( DXUTSETTINGSDLG_DEVICECLIP );
return pCheckBox->GetChecked();
}
//--------------------------------------------------------------------------------------
// Returns the string for the given D3DDEVTYPE.
//--------------------------------------------------------------------------------------
WCHAR* DXUTD3DDeviceTypeToString(D3DDEVTYPE devType)
{
switch (devType)
{
case D3DDEVTYPE_HAL: return L"D3DDEVTYPE_HAL";
case D3DDEVTYPE_SW: return L"D3DDEVTYPE_SW";
case D3DDEVTYPE_REF: return L"D3DDEVTYPE_REF";
default: return L"Unknown devType";
}
}
//--------------------------------------------------------------------------------------
// Returns the string for the given D3DMULTISAMPLE_TYPE.
//--------------------------------------------------------------------------------------
WCHAR* DXUTMultisampleTypeToString(D3DMULTISAMPLE_TYPE MultiSampleType)
{
switch (MultiSampleType)
{
case D3DMULTISAMPLE_NONE: return L"D3DMULTISAMPLE_NONE";
case D3DMULTISAMPLE_NONMASKABLE: return L"D3DMULTISAMPLE_NONMASKABLE";
case D3DMULTISAMPLE_2_SAMPLES: return L"D3DMULTISAMPLE_2_SAMPLES";
case D3DMULTISAMPLE_3_SAMPLES: return L"D3DMULTISAMPLE_3_SAMPLES";
case D3DMULTISAMPLE_4_SAMPLES: return L"D3DMULTISAMPLE_4_SAMPLES";
case D3DMULTISAMPLE_5_SAMPLES: return L"D3DMULTISAMPLE_5_SAMPLES";
case D3DMULTISAMPLE_6_SAMPLES: return L"D3DMULTISAMPLE_6_SAMPLES";
case D3DMULTISAMPLE_7_SAMPLES: return L"D3DMULTISAMPLE_7_SAMPLES";
case D3DMULTISAMPLE_8_SAMPLES: return L"D3DMULTISAMPLE_8_SAMPLES";
case D3DMULTISAMPLE_9_SAMPLES: return L"D3DMULTISAMPLE_9_SAMPLES";
case D3DMULTISAMPLE_10_SAMPLES: return L"D3DMULTISAMPLE_10_SAMPLES";
case D3DMULTISAMPLE_11_SAMPLES: return L"D3DMULTISAMPLE_11_SAMPLES";
case D3DMULTISAMPLE_12_SAMPLES: return L"D3DMULTISAMPLE_12_SAMPLES";
case D3DMULTISAMPLE_13_SAMPLES: return L"D3DMULTISAMPLE_13_SAMPLES";
case D3DMULTISAMPLE_14_SAMPLES: return L"D3DMULTISAMPLE_14_SAMPLES";
case D3DMULTISAMPLE_15_SAMPLES: return L"D3DMULTISAMPLE_15_SAMPLES";
case D3DMULTISAMPLE_16_SAMPLES: return L"D3DMULTISAMPLE_16_SAMPLES";
default: return L"Unknown Multisample Type";
}
}
//--------------------------------------------------------------------------------------
// Returns the string for the given vertex processing type
//--------------------------------------------------------------------------------------
WCHAR* DXUTVertexProcessingTypeToString(DWORD vpt)
{
switch (vpt)
{
case D3DCREATE_SOFTWARE_VERTEXPROCESSING: return L"Software vertex processing";
case D3DCREATE_MIXED_VERTEXPROCESSING: return L"Mixed vertex processing";
case D3DCREATE_HARDWARE_VERTEXPROCESSING: return L"Hardware vertex processing";
case D3DCREATE_PUREDEVICE: return L"Pure hardware vertex processing";
default: return L"Unknown vertex processing type";
}
}
//--------------------------------------------------------------------------------------
// Returns the string for the given present interval.
//--------------------------------------------------------------------------------------
WCHAR* DXUTPresentIntervalToString( UINT pi )
{
switch( pi )
{
case D3DPRESENT_INTERVAL_IMMEDIATE: return L"D3DPRESENT_INTERVAL_IMMEDIATE";
case D3DPRESENT_INTERVAL_DEFAULT: return L"D3DPRESENT_INTERVAL_DEFAULT";
case D3DPRESENT_INTERVAL_ONE: return L"D3DPRESENT_INTERVAL_ONE";
case D3DPRESENT_INTERVAL_TWO: return L"D3DPRESENT_INTERVAL_TWO";
case D3DPRESENT_INTERVAL_THREE: return L"D3DPRESENT_INTERVAL_THREE";
case D3DPRESENT_INTERVAL_FOUR: return L"D3DPRESENT_INTERVAL_FOUR";
default: return L"Unknown PresentInterval";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -