Added GPU SoftBody constraint solvers for DirectX 11 (Direct Compute) and OpenCL, thanks to AMD.
See also http://code.google.com/p/bullet/issues/detail?id=390 Added Demos/DX11ClothDemo (an OpenCL cloth demo will follow soon)
This commit is contained in:
248
Demos/DX11ClothDemo/DXUT/Optional/DXUTsettingsdlg.h
Normal file
248
Demos/DX11ClothDemo/DXUT/Optional/DXUTsettingsdlg.h
Normal file
@@ -0,0 +1,248 @@
|
||||
//--------------------------------------------------------------------------------------
|
||||
// File: DXUTSettingsDlg.cpp
|
||||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved
|
||||
//--------------------------------------------------------------------------------------
|
||||
#pragma once
|
||||
#ifndef DXUT_SETTINGS_H
|
||||
#define DXUT_SETTINGS_H
|
||||
|
||||
//--------------------------------------------------------------------------------------
|
||||
// Header Includes
|
||||
//--------------------------------------------------------------------------------------
|
||||
#include "DXUTgui.h"
|
||||
//--------------------------------------------------------------------------------------
|
||||
// Control IDs
|
||||
//--------------------------------------------------------------------------------------
|
||||
#define DXUTSETTINGSDLG_STATIC -1
|
||||
#define DXUTSETTINGSDLG_OK 1
|
||||
#define DXUTSETTINGSDLG_CANCEL 2
|
||||
#define DXUTSETTINGSDLG_ADAPTER 3
|
||||
#define DXUTSETTINGSDLG_DEVICE_TYPE 4
|
||||
#define DXUTSETTINGSDLG_WINDOWED 5
|
||||
#define DXUTSETTINGSDLG_FULLSCREEN 6
|
||||
#define DXUTSETTINGSDLG_ADAPTER_FORMAT 7
|
||||
#define DXUTSETTINGSDLG_ADAPTER_FORMAT_LABEL 8
|
||||
#define DXUTSETTINGSDLG_RESOLUTION 9
|
||||
#define DXUTSETTINGSDLG_RESOLUTION_LABEL 10
|
||||
#define DXUTSETTINGSDLG_REFRESH_RATE 11
|
||||
#define DXUTSETTINGSDLG_REFRESH_RATE_LABEL 12
|
||||
#define DXUTSETTINGSDLG_BACK_BUFFER_FORMAT 13
|
||||
#define DXUTSETTINGSDLG_BACK_BUFFER_FORMAT_LABEL 14
|
||||
#define DXUTSETTINGSDLG_DEPTH_STENCIL 15
|
||||
#define DXUTSETTINGSDLG_DEPTH_STENCIL_LABEL 16
|
||||
#define DXUTSETTINGSDLG_MULTISAMPLE_TYPE 17
|
||||
#define DXUTSETTINGSDLG_MULTISAMPLE_TYPE_LABEL 18
|
||||
#define DXUTSETTINGSDLG_MULTISAMPLE_QUALITY 19
|
||||
#define DXUTSETTINGSDLG_MULTISAMPLE_QUALITY_LABEL 20
|
||||
#define DXUTSETTINGSDLG_VERTEX_PROCESSING 21
|
||||
#define DXUTSETTINGSDLG_VERTEX_PROCESSING_LABEL 22
|
||||
#define DXUTSETTINGSDLG_PRESENT_INTERVAL 23
|
||||
#define DXUTSETTINGSDLG_PRESENT_INTERVAL_LABEL 24
|
||||
#define DXUTSETTINGSDLG_DEVICECLIP 25
|
||||
#define DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL 26
|
||||
#define DXUTSETTINGSDLG_API_VERSION 27
|
||||
#define DXUTSETTINGSDLG_D3D11_ADAPTER_OUTPUT 28
|
||||
#define DXUTSETTINGSDLG_D3D11_ADAPTER_OUTPUT_LABEL 29
|
||||
#define DXUTSETTINGSDLG_D3D11_RESOLUTION 30
|
||||
#define DXUTSETTINGSDLG_D3D11_RESOLUTION_LABEL 31
|
||||
#define DXUTSETTINGSDLG_D3D11_REFRESH_RATE 32
|
||||
#define DXUTSETTINGSDLG_D3D11_REFRESH_RATE_LABEL 33
|
||||
#define DXUTSETTINGSDLG_D3D11_BACK_BUFFER_FORMAT 34
|
||||
#define DXUTSETTINGSDLG_D3D11_BACK_BUFFER_FORMAT_LABEL 35
|
||||
#define DXUTSETTINGSDLG_D3D11_MULTISAMPLE_COUNT 36
|
||||
#define DXUTSETTINGSDLG_D3D11_MULTISAMPLE_COUNT_LABEL 37
|
||||
#define DXUTSETTINGSDLG_D3D11_MULTISAMPLE_QUALITY 38
|
||||
#define DXUTSETTINGSDLG_D3D11_MULTISAMPLE_QUALITY_LABEL 39
|
||||
#define DXUTSETTINGSDLG_D3D11_PRESENT_INTERVAL 40
|
||||
#define DXUTSETTINGSDLG_D3D11_PRESENT_INTERVAL_LABEL 41
|
||||
#define DXUTSETTINGSDLG_D3D11_DEBUG_DEVICE 42
|
||||
#define DXUTSETTINGSDLG_D3D11_FEATURE_LEVEL 43
|
||||
#define DXUTSETTINGSDLG_D3D11_FEATURE_LEVEL_LABEL 44
|
||||
|
||||
#define DXUTSETTINGSDLG_MODE_CHANGE_ACCEPT 58
|
||||
#define DXUTSETTINGSDLG_MODE_CHANGE_REVERT 59
|
||||
#define DXUTSETTINGSDLG_STATIC_MODE_CHANGE_TIMEOUT 60
|
||||
#define DXUTSETTINGSDLG_WINDOWED_GROUP 0x0100
|
||||
|
||||
#define TOTAL_FEATURE_LEVLES 6
|
||||
//--------------------------------------------------------------------------------------
|
||||
// Dialog for selection of device settings
|
||||
// Use DXUTGetD3DSettingsDialog() to access global instance
|
||||
// To control the contents of the dialog, use the CD3D9Enumeration class.
|
||||
//--------------------------------------------------------------------------------------
|
||||
class CD3DSettingsDlg
|
||||
{
|
||||
public:
|
||||
CD3DSettingsDlg();
|
||||
~CD3DSettingsDlg();
|
||||
|
||||
void Init( CDXUTDialogResourceManager* pManager );
|
||||
void Init( CDXUTDialogResourceManager* pManager, LPCWSTR szControlTextureFileName );
|
||||
void Init( CDXUTDialogResourceManager* pManager, LPCWSTR pszControlTextureResourcename,
|
||||
HMODULE hModule );
|
||||
|
||||
HRESULT Refresh();
|
||||
void OnRender( float fElapsedTime );
|
||||
void OnRender9( float fElapsedTime );
|
||||
void OnRender10( float fElapsedTime );
|
||||
void OnRender11( float fElapsedTime );
|
||||
|
||||
HRESULT OnD3D9CreateDevice( IDirect3DDevice9* pd3dDevice );
|
||||
HRESULT OnD3D9ResetDevice();
|
||||
void OnD3D9LostDevice();
|
||||
void OnD3D9DestroyDevice();
|
||||
|
||||
HRESULT OnD3D11CreateDevice( ID3D11Device* pd3dDevice );
|
||||
HRESULT OnD3D11ResizedSwapChain( ID3D11Device* pd3dDevice,
|
||||
const DXGI_SURFACE_DESC* pBackBufferSurfaceDesc );
|
||||
void OnD3D11DestroyDevice();
|
||||
|
||||
CDXUTDialog* GetDialogControl()
|
||||
{
|
||||
return &m_Dialog;
|
||||
}
|
||||
bool IsActive()
|
||||
{
|
||||
return m_bActive;
|
||||
}
|
||||
void SetActive( bool bActive )
|
||||
{
|
||||
m_bActive = bActive; if( bActive ) Refresh();
|
||||
}
|
||||
void ShowControlSet( DXUTDeviceVersion ver );
|
||||
|
||||
LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
|
||||
|
||||
protected:
|
||||
friend CD3DSettingsDlg* WINAPI DXUTGetD3DSettingsDialog();
|
||||
|
||||
void CreateControls();
|
||||
HRESULT SetDeviceSettingsFromUI();
|
||||
void SetSelectedD3D11RefreshRate( DXGI_RATIONAL RefreshRate );
|
||||
HRESULT UpdateD3D11Resolutions();
|
||||
|
||||
void OnEvent( UINT nEvent, int nControlID, CDXUTControl* pControl );
|
||||
static void WINAPI StaticOnEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserData );
|
||||
static void WINAPI StaticOnModeChangeTimer( UINT nIDEvent, void* pUserContext );
|
||||
|
||||
CD3D9EnumAdapterInfo* GetCurrentAdapterInfo();
|
||||
CD3D9EnumDeviceInfo* GetCurrentDeviceInfo();
|
||||
CD3D9EnumDeviceSettingsCombo* GetCurrentDeviceSettingsCombo();
|
||||
|
||||
CD3D11EnumAdapterInfo* GetCurrentD3D11AdapterInfo();
|
||||
CD3D11EnumDeviceInfo* GetCurrentD3D11DeviceInfo();
|
||||
CD3D11EnumOutputInfo* GetCurrentD3D11OutputInfo();
|
||||
CD3D11EnumDeviceSettingsCombo* GetCurrentD3D11DeviceSettingsCombo();
|
||||
|
||||
void AddAPIVersion( DXUTDeviceVersion version );
|
||||
DXUTDeviceVersion GetSelectedAPIVersion();
|
||||
|
||||
void AddAdapter( const WCHAR* strDescription, UINT iAdapter );
|
||||
UINT GetSelectedAdapter();
|
||||
|
||||
void AddDeviceType( D3DDEVTYPE devType );
|
||||
D3DDEVTYPE GetSelectedDeviceType();
|
||||
|
||||
void SetWindowed( bool bWindowed );
|
||||
bool IsWindowed();
|
||||
|
||||
void AddAdapterFormat( D3DFORMAT format );
|
||||
D3DFORMAT GetSelectedAdapterFormat();
|
||||
|
||||
void AddResolution( DWORD dwWidth, DWORD dwHeight );
|
||||
void GetSelectedResolution( DWORD* pdwWidth, DWORD* pdwHeight );
|
||||
|
||||
void AddRefreshRate( DWORD dwRate );
|
||||
DWORD GetSelectedRefreshRate();
|
||||
|
||||
void AddBackBufferFormat( D3DFORMAT format );
|
||||
D3DFORMAT GetSelectedBackBufferFormat();
|
||||
|
||||
void AddDepthStencilBufferFormat( D3DFORMAT format );
|
||||
D3DFORMAT GetSelectedDepthStencilBufferFormat();
|
||||
|
||||
void AddMultisampleType( D3DMULTISAMPLE_TYPE type );
|
||||
D3DMULTISAMPLE_TYPE GetSelectedMultisampleType();
|
||||
|
||||
void AddMultisampleQuality( DWORD dwQuality );
|
||||
DWORD GetSelectedMultisampleQuality();
|
||||
|
||||
void AddVertexProcessingType( DWORD dwType );
|
||||
DWORD GetSelectedVertexProcessingType();
|
||||
|
||||
DWORD GetSelectedPresentInterval();
|
||||
|
||||
void SetDeviceClip( bool bDeviceClip );
|
||||
bool IsDeviceClip();
|
||||
|
||||
// D3D11
|
||||
void AddD3D11DeviceType( D3D_DRIVER_TYPE devType );
|
||||
D3D_DRIVER_TYPE GetSelectedD3D11DeviceType();
|
||||
|
||||
void AddD3D11AdapterOutput( const WCHAR* strName, UINT nOutput );
|
||||
UINT GetSelectedD3D11AdapterOutput();
|
||||
|
||||
void AddD3D11Resolution( DWORD dwWidth, DWORD dwHeight );
|
||||
void GetSelectedD3D11Resolution( DWORD* pdwWidth, DWORD* pdwHeight );
|
||||
|
||||
void AddD3D11FeatureLevel(D3D_FEATURE_LEVEL);
|
||||
D3D_FEATURE_LEVEL GetSelectedFeatureLevel();
|
||||
|
||||
void AddD3D11RefreshRate( DXGI_RATIONAL RefreshRate );
|
||||
DXGI_RATIONAL GetSelectedD3D11RefreshRate();
|
||||
|
||||
void AddD3D11BackBufferFormat( DXGI_FORMAT format );
|
||||
DXGI_FORMAT GetSelectedD3D11BackBufferFormat();
|
||||
|
||||
void AddD3D11MultisampleCount( UINT count );
|
||||
UINT GetSelectedD3D11MultisampleCount();
|
||||
|
||||
void AddD3D11MultisampleQuality( UINT Quality );
|
||||
UINT GetSelectedD3D11MultisampleQuality();
|
||||
|
||||
DWORD GetSelectedD3D11PresentInterval();
|
||||
bool GetSelectedDebugDeviceValue();
|
||||
|
||||
|
||||
|
||||
HRESULT OnD3D11ResolutionChanged ();
|
||||
HRESULT OnAPIVersionChanged( bool bRefresh=false );
|
||||
HRESULT OnFeatureLevelChanged();
|
||||
HRESULT OnAdapterChanged();
|
||||
HRESULT OnDeviceTypeChanged();
|
||||
HRESULT OnWindowedFullScreenChanged();
|
||||
HRESULT OnAdapterOutputChanged();
|
||||
HRESULT OnAdapterFormatChanged();
|
||||
HRESULT OnResolutionChanged();
|
||||
HRESULT OnRefreshRateChanged();
|
||||
HRESULT OnBackBufferFormatChanged();
|
||||
HRESULT OnDepthStencilBufferFormatChanged();
|
||||
HRESULT OnMultisampleTypeChanged();
|
||||
HRESULT OnMultisampleQualityChanged();
|
||||
HRESULT OnVertexProcessingChanged();
|
||||
HRESULT OnPresentIntervalChanged();
|
||||
HRESULT OnDebugDeviceChanged();
|
||||
HRESULT OnDeviceClipChanged();
|
||||
|
||||
void UpdateModeChangeTimeoutText( int nSecRemaining );
|
||||
|
||||
IDirect3DStateBlock9* m_pStateBlock;
|
||||
CDXUTDialog* m_pActiveDialog;
|
||||
CDXUTDialog m_Dialog;
|
||||
CDXUTDialog m_RevertModeDialog;
|
||||
int m_nRevertModeTimeout;
|
||||
UINT m_nIDEvent;
|
||||
bool m_bActive;
|
||||
|
||||
D3D_FEATURE_LEVEL m_Levels[TOTAL_FEATURE_LEVLES];
|
||||
|
||||
};
|
||||
|
||||
|
||||
CD3DSettingsDlg* WINAPI DXUTGetD3DSettingsDialog();
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user