资源简介
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初始化\
- 上一篇:QT3显示图片小程序
- 下一篇:D3D11绘图基础:旋转的彩色立方体
相关资源
- D3D11绘图基础:旋转的彩色立方体
- RN8209C及D初始化及UART通讯参考程序.
- 深思S4锁初始化工具
- 金蝶云 K3_Cloud实施初始化 七个步骤
- 博图1号梯初始化程序.zip
- ST7701_854*480显示屏初始化参数
- PCI设备初始化编程的过程
- ili9488液晶初始化RGB接口
- ADAS1000初始化代码,亲测好用
- TAS5715初始化代码
- PCI设备BAR空间的初始化
- PCI设备初始化
- sim800c透传模式 +串口1-5初始化源码
- STM32L452ADC初始化+外部电压采集+温度传
- 关于DSP2812复位、初始化、CMD文件编写
- 百度智能小程序官方纯净demo 初始化
- D3D11_Pick
- D3D11教程2源码
- ads1115初始化配置读取程序
- 8259A的编程初始化和编程
- 串的基本操作定长顺序存储表示:初
- 采用顺序存储实现栈的初始化、入栈
- 在MAX-IDE中自动初始化数据段
- 深思S4 加密狗型号快速检测V5.1 S4初始
- linux DRM图像处理平台初始化流程
- 捷顺富士IC卡解密软件初始化软件
- w5500 与fpga的spi通信源代码及w5500初始
- 3Par存储详细配置手册包括存储初始化
- Xilinx片内存储器的例化和初始化.doc
- D3D11 第一人称摄像机类的实现
评论
共有 条评论