檢視 DirectX各版本差異比較 的原始碼
←
DirectX各版本差異比較
跳至導覽
跳至搜尋
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
'''DirectX各版本差異比較''' __toc__ ==初始裝置== {| class="wikitable" |- !版本!!用法 |- |DX9 | <source lang="cpp"> IDirect3D9* pD3D9; IDirect3DDevice9* pDevice; pD3D9 = Direct3DCreate9(D3D_SDK_VERSION); if (pD3D9 == NULL) return false; D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS)); d3dpp.BackBufferWidth = width; d3dpp.BackBufferHeight = height; if (isFullScreen) { // Full Screen mode d3dpp.Windowed = false; d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferCount = D3DPRESENT_BACK_BUFFERS_MAX; d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; } else { // Window mode d3dpp.Windowed = true; D3DDISPLAYMODE d3ddm; pD3D9->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ); d3dpp.BackBufferFormat = d3ddm.Format; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferCount = D3DPRESENT_BACK_BUFFERS_MAX; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; } DWORD Flags = D3DCREATE_MIXED_VERTEXPROCESSING | D3DCREATE_MULTITHREADED; HRESULT hr = pD3D9->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, Flags, &d3dpp, &pDevice ); if (FAILED(hr) || (_pDevice == NULL)) return false; </source> |- |DX10 | <source lang="cpp"> ID3D10Device* pDevice; IDXGISwapChain* pSwapChain; DXGI_SWAP_CHAIN_DESC scd; ZeroMemory(&scd, sizeof(scd)); scd.BufferCount = 1; // one back buffer scd.BufferDesc.Width = width; scd.BufferDesc.Height = height; scd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; // use 32-bit color if (_vsync_enabled) { scd.BufferDesc.RefreshRate.Numerator = 60; scd.BufferDesc.RefreshRate.Denominator = 1; } else { scd.BufferDesc.RefreshRate.Numerator = 0; scd.BufferDesc.RefreshRate.Denominator = 1; } scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; // how swap chain is to be used scd.OutputWindow = hWnd; scd.SampleDesc.Count = 4; // how many multisamples scd.SampleDesc.Quality = 0; if (isFullScreen) { scd.Windowed = TRUE; } else { scd.Windowed = FALSE; } UINT SDKVersion = D3D10_SDK_VERSION; D3D_FEATURE_LEVEL FeatureLevels = D3D_FEATURE_LEVEL_10_0; D3D10_DRIVER_TYPE DriverType = D3D10_DRIVER_TYPE_HARDWARE; D3D_FEATURE_LEVEL FeatureLevel; HRESULT hr = D3D10CreateDeviceAndSwapChain( NULL, //[in] IDXGIAdapter *pAdapter, DriverType, //[in] D3D10_DRIVER_TYPE DriverType, NULL, //[in] HMODULE Software, 0, //[in] UINT Flags, SDKVersion, //[in] UINT SDKVersion, &scd, //[in] DXGI_SWAP_CHAIN_DESC *pSwapChainDesc, &pSwapChain, //[out] IDXGISwapChain **ppSwapChain, &pDevice //[out] ID3D10Device **ppDevice ); if (FAILED(hr)) return false; </source> |- |DX11 | <source lang="cpp"> ID3D11Device* pDevice; IDXGISwapChain* pSwapChain; ID3D11DeviceContext* pDeviceContext; DXGI_SWAP_CHAIN_DESC scd; ZeroMemory(&scd, sizeof(scd)); scd.BufferCount = 1; // one back buffer scd.BufferDesc.Width = width; scd.BufferDesc.Height = height; scd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; // use 32-bit color if (_vsync_enabled) { scd.BufferDesc.RefreshRate.Numerator = 60; scd.BufferDesc.RefreshRate.Denominator = 1; } else { scd.BufferDesc.RefreshRate.Numerator = 0; scd.BufferDesc.RefreshRate.Denominator = 1; } scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; // how swap chain is to be used scd.OutputWindow = hWnd; scd.SampleDesc.Count = 4; scd.SampleDesc.Quality = 0; if (isFullScreen) { scd.Windowed = TRUE; } else { scd.Windowed = FALSE; } UINT SDKVersion = D3D11_SDK_VERSION; D3D_FEATURE_LEVEL FeatureLevels = D3D_FEATURE_LEVEL_11_0; D3D_DRIVER_TYPE DriverType = D3D_DRIVER_TYPE_HARDWARE; D3D_FEATURE_LEVEL FeatureLevel; HRESULT hr = D3D11CreateDeviceAndSwapChain( NULL, //[in] IDXGIAdapter *pAdapter DriverType, //[in] D3D_DRIVER_TYPE DriverType NULL, //[in] HMODULE Software 0, //[in] UINT Flags &FeatureLevels, //[in] D3D_FEATURE_LEVEL *pFeatureLevels 1, //[in] UINT FeatureLevels SDKVersion, //[in] UINT SDKVersion &scd, //[in] DXGI_SWAP_CHAIN_DESC *pSwapChainDesc &pSwapChain, //[out] IDXGISwapChain **ppSwapChain &pDevice, //[out] ID3D11Device **ppDevice &FeatureLevel, //[out] D3D_FEATURE_LEVEL *pFeatureLevel &pDeviceContext); //[out] ID3D11DeviceContext **ppDeviceContext if (FAILED(hr)) return false; </source> |- |} ==建立DepthBuffer== {| class="wikitable" |- !版本!!用法 |- |DX9 | |- |DX10 | |- |DX11 | |- |} ==參考資料== *[http://msdn.microsoft.com/zh-tw/library/windows/apps/dn166864.aspx 將 DirectX 9 功能對應到 DirectX 11 API] *[http://blogs.msdn.com/b/chuckw/archive/2013/08/21/living-without-d3dx.aspx Living without D3DX - Games for Windows and the DirectX SDK - Site Home - MSDN Blogs] *[http://blogs.msdn.com/b/chuckw/archive/2014/06/27/directxmesh.aspx DirectXMesh - Games for Windows and the DirectX SDK - Site Home - MSDN Blogs] [[Category:DirectX]]
返回「
DirectX各版本差異比較
」頁面
導覽選單
個人工具
登入
命名空間
頁面
討論
變體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
社群入口
新聞動態
新聞直播
近期變更
Online IDE
分類
程式語言
資料結構
演算法
技術
軟體
SQL資料庫
網站套件
免費資源
副檔名
檔案格式
分類
其他
動畫
漫畫
小說
小說導讀
驅動程式
購物用
求職網站
推薦書單
線上學習
技術類News或部落格
Microsoft devblogs
網頁技術News
資料技術News
安全性相關News
MS-MVP
藍色小舖認證專家
經營行銷類部落格
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊