資源簡介
directx11教程2代碼

代碼片段和文件信息
#include“D3DClass.h“
D3DClass::D3DClass()
{
md3dDevice?=?NULL;
md3dImmediateContext?=?NULL;;
md3dSwapChain=NULL;
md3dRenderTargetView=NULL;?
md3dDepthStencilView?=?NULL;
????md3dDepthStencilBuffer=NULL;?
md3dDepthStencilState=NULL;
????md3dRasterizerState=NULL;?
}
D3DClass::~D3DClass()
{
}
D3DClass::D3DClass(const?D3DClass&?other)
{
}
bool?D3DClass::Initialize(int?ScreenWidth?int?ScreenHeight?bool?vsync?HWND?hwnd?bool?fullscreen?float?ScreenDepth?float?ScreenNear)
{
float?fieldOfView?screenAspect;
//--------------------------------------------------------------
//第一獲取顯示模式信息和顯卡信息
//---------------------------------------------------------------
IDXGIAdapter*?adpter;//適配器
IDXGIFactory*?factory;
IDXGIOutput*?adapterOutput;
unsigned?int?numModes?numerator?denominator?stringLength;
DXGI_MODE_DESC*?displayModeList;
DXGI_ADAPTER_DESC?adapterDesc;
int?error;
//存儲vsyn設定
mVsyncEnable?=?vsync;
//創(chuàng)建一個Directx圖形接口factory
HR(CreateDXGIFactory(__uuidof(IDXGIFactory)?(void**)&factory));
//使用factory來為顯卡創(chuàng)建一個adapter
HR(factory->EnumAdapters(0?&adpter));
//列舉主要的適配器輸出
HR(adpter->EnumOutputs(0?&adapterOutput));
//獲取適應適配器DXGI_FORMAT_R8G8B8A8_UNORM顯示格式的模式數目
HR(adapterOutput->GetDisplayModeList(DXGI_FORMAT_R8G8B8A8_UNORM?DXGI_ENUM_MODES_INTERLACED?&numModes?NULL));
//創(chuàng)建一個顯示模式列表存放可能的顯示模式(顯卡監(jiān)視器)
displayModeList=?new?DXGI_MODE_DESC[numModes];
if?(!displayModeList)
return?false;
//填充顯示模式列表結構體
HR(adapterOutput->GetDisplayModeList(DXGI_FORMAT_R8G8B8A8_UNORM?DXGI_ENUM_MODES_INTERLACED?&numModes?displayModeList));
//瀏覽所有的顯示模式找到適合屏幕寬度和高度的
//當一個模式匹配存儲監(jiān)視器刷新速度的分子分母??
for?(int?i?=?0;?i {
if?(displayModeList[i].Width?==?(unsigned?int)ScreenWidth)
{
if?(displayModeList[i].Height?==?(unsigned?int)ScreenHeight)
{
numerator?=?displayModeList[i].RefreshRate.Numerator;
denominator?=?displayModeList[i].RefreshRate.Denominator;
}
}
}
//獲取適配器(顯卡)形容
HR(adpter->GetDesc(&adapterDesc));
//獲取顯卡內存量
mVideoCardMemory?=?(int)(adapterDesc.DedicatedVideoMemory?/?1024?/?1024);
//將顯卡名字轉存在字符數組
error?=?wcstombs_s(&stringLength?mVideoCardDescription?128?adapterDesc.Description?128);
if?(error?!=?0)
{
return?false;
}
//釋放顯示模式列表
delete[]?displayModeList;
displayModeList?=?NULL;
ReleaseCOM(adpter);
ReleaseCOM(factory);
//-----------------------------------------------------
//第二填充交換鏈形容結構體
//-----------------------------------------------------
DXGI_SWAP_CHAIN_DESC?sd;
ZeroMemory(&sd?sizeof(sd));
sd.BufferDesc.Width?=?ScreenWidth;
sd.BufferDesc.Height?=?ScreenHeight;
sd.BufferDesc.Format?=?DXGI_FORMAT_R8G8B8A8_UNORM;
if?(mVsyncEnable)?//限不限幀
{
sd.BufferDesc.RefreshRate.Numerator?=numerator;
sd.BufferDesc.RefreshRate.Denominator?=?denominator;
}
else
{
sd.BufferDesc.RefreshRate.Numerator?=?0;
sd.BufferDesc.RefreshRate.Denominator?=?1
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????10994??2016-09-28?17:22??D3D11教程2\D3DClass.cpp
?????文件???????2002??2016-09-28?17:05??D3D11教程2\D3DClass.h
?????文件???????1004??2016-09-28?16:59??D3D11教程2\GraphicsClass.cpp
?????文件????????628??2016-09-28?17:14??D3D11教程2\GraphicsClass.h
?????文件????????497??2016-09-27?11:27??D3D11教程2\InputClass.cpp
?????文件????????372??2016-09-27?11:11??D3D11教程2\InputClass.h
?????文件???????5840??2016-09-27?18:12??D3D11教程2\SystemClass.cpp
?????文件???????1196??2016-09-27?11:56??D3D11教程2\SystemClass.h
?????文件????????466??2016-09-27?11:37??D3D11教程2\源.cpp
?????目錄??????????0??2016-10-01?09:44??D3D11教程2
-----------?---------??----------?-----??----
????????????????22999????????????????????10
- 上一篇:高程點按范圍檢查粗差
- 下一篇:D3D11_Pick
評論
共有 條評論