• 大小: 9KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: 其他
  • 标签: D3D11  初始化  

资源简介

D3D11初始化,一个最简单的D3D11应用程序。学习D3D的开始。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

using namespace std;

//重要的全局变量
//在后面学习过程中,这些全局将作为框架类的成员变量存在
HINSTANCE g_hInstance(NULL);
HWND g_hWnd(NULL);

wstring g_clsName(L“d3d11“);
wstring g_wndtitle(L“D3D11初始化“);

UINT g_winWidth(640);
UINT g_winHeight(480);

//D3D相关全局变量
ID3D11Device *g_device(NULL);
ID3D11DeviceContext *g_deviceContext(NULL);
IDXGISwapChain *g_swapChain(NULL);

ID3D11DepthStencilView *g_depthStencilView(NULL);
ID3D11RenderTargetView *g_renderTargetView(NULL);

//初始化
BOOL InitWin32();
//初始化D3D
BOOL InitD3D();
void Render();
//主循环
int  Run();
//回收资源
void Release();

LRESULT CALLBACK WinProc(HWND hwnd UINT msg WPARAM wParam LPARAM lParam);

//程序入口
int WINAPI WinMain(HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR cmdLine int cmdShow)
{
g_hInstance = hInstance;

if(!InitWin32())
return -1;
if(!InitD3D())
return -1;

return Run();
}

BOOL InitWin32()
{
//创建窗口类
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockobject(NULL_BRUSH);
wndcls.hCursor = LoadCursor(NULLIDC_ARROW);
wndcls.hIcon = LoadIcon(NULLIDI_APPLICATION);
wndcls.hInstance = g_hInstance;
wndcls.lpfnWndProc = WinProc;
wndcls.lpszClassName = g_clsName.c_str();
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW | CS_VREDRAW;

//注册窗口类
if(!RegisterClass(&wndcls))
{
MessageBox(NULLL“窗口注册失败!“L“错误“MB_OK);
return FALSE;
}

//创建窗口
g_hWnd = CreateWindow(g_clsName.c_str()
g_wndtitle.c_str()
WS_OVERLAPPEDWINDOW
  CW_USEDEFAULTCW_USEDEFAULT
g_winWidthg_winHeight
NULL
NULL
g_hInstance
NULL);
if(!g_hWnd)
{
MessageBox(NULLL“窗口创建失败!“L“错误“MB_OK);
return FALSE;
}

//显示、更新窗口
ShowWindow(g_hWndSW_SHOW);
UpdateWindow(g_hWnd);

//Win32初始化完毕
return TRUE;
}

BOOL InitD3D()
{
//创建设备及上下文
D3D_FEATURE_LEVEL features[3] = {D3D_FEATURE_LEVEL_11_0 D3D_FEATURE_LEVEL_10_0 D3D_FEATURE_LEVEL_9_3};
D3D_FEATURE_LEVEL myFeatureLevel;
HRESULT hr = D3D11CreateDevice(NULLD3D_DRIVER_TYPE_HARDWARE00features3D3D11_SDK_VERSION&g_device&myFeatureLevel&g_deviceContext);
if(FAILED(hr))
{
MessageBox(NULLL“创建d3d11设备失败!“L“错误“MB_OK);
return FALSE;
}

//检测4x采样等级
UINT msaa4xQuality(0);
g_device->CheckMultisampleQualityLevels(DXGI_FORMAT_R8G8B8A8_UNORM4&msaa4xQuality);

//创建交换链
//先描述其属性
DXGI_SWAP_CHAIN_DESC swapChainDesc = {0};
swapChainDesc.BufferDesc.Width = g_winWidth; //宽、高
swapChainDesc.BufferDesc.Height = g_winHeight;
swapChainDesc.BufferDesc.RefreshRate.Denominator = 1; //刷新率
swapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
swapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; //恒定参数,按照这样指明即可
swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; //同上
swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        7178  2012-12-13 08:28  D3D11初始化\Win32.cpp
     文件       12288  2012-12-13 08:28  D3D11初始化\init.exe
     目录           0  2012-12-13 08:29  D3D11初始化\

评论

共有 条评论