DirectX入门之初始化Direct3D及常见问题
2017-11-03 17:50
716 查看
这篇文章主要讲解如何初始化Direct3D。Direct3D初始化成功后,我们将的到一个代表显卡的C++对象(类型:IDrect3DDevice9)。
解决方案一:
在VS.NET中的项目/属性/配置属性/连接器/输入/附加依赖项中添加以下文件名,d3dx9.lib d3dxof.lib d3d9.lib winmm.lib dxguid.lib comctl32.lib 就可以了.
解决方案二:
初始化流程图:
完整代码:
//全局变量 IDirect3DDevice9 *device = 0 ; // Step 1: Create the IDirect3D9 object. IDirect3D9* d3d9 = 0; d3d9 = Direct3DCreate9(D3D_SDK_VERSION); if (!d3d9) { return false; } // Step 2: Check for hardware vp. D3DCAPS9 caps; d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps); int vp = 0; if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) vp = D3DCREATE_HARDWARE_VERTEXPROCESSING; else vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING; // Step 3: Fill out the D3DPRESENT_PARAMETERS structure. D3DPRESENT_PARAMETERS d3dpp; d3dpp.BackBufferWidth = 800; d3dpp.BackBufferHeight = 600; d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; d3dpp.BackBufferCount = 1; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.MultiSampleQuality = 0; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.hDeviceWindow = hWnd; d3dpp.Windowed = false; d3dpp.EnableAutoDepthStencil = true; d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; d3dpp.Flags = 0; d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; /////////////////////////////// // Step 4: Create the device.(device代表的是物理显卡) ////////////////////////////// HRESULT hr = d3d9->CreateDevice( D3DADAPTER_DEFAULT, // primary adapter D3DDEVTYPE_HAL, // device type hWnd, // window associated with device vp, // vertex processing &d3dpp, // present parameters &device); // return created device if (FAILED(hr)) { d3d9->Release(); // done with d3d9 object return false; } else { ::MessageBox(0, L"显卡对象创建成功",0,0); } } d3d9->Release(); // done with d3d9 object
可能会遇到的错误:
错误类型:无法解析的外部符号 Direct3DCreate9@4
解决方案一:
在VS.NET中的项目/属性/配置属性/连接器/输入/附加依赖项中添加以下文件名,d3dx9.lib d3dxof.lib d3d9.lib winmm.lib dxguid.lib comctl32.lib 就可以了.
解决方案二:
#pragma comment(lib,"d3d9.lib") #pragma comment(lib,"winmm.lib") #pragma comment(lib,"d3dx9.lib")
相关文章推荐
- 小白入门笔记——科密XC-51A消费机常见问题整理
- Introduction to 3D Game Programming with DirectX 11学习笔记 4.2Direct3D进行初始化
- oracle 入门常见问题
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何在初始化的时候写入参数
- bootstrap常用功能快速入门以及常见问题解决方案
- XML入门的常见问题(二)
- XML入门的常见问题(四)
- Maven入门教程六----常见问题
- destoon入门实例与常见问题汇总
- jQuery入门问答 整理的几个常见的初学者问题
- JEECG 新手常见问题大全,入门必读
- Android入门常见问题
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面快速入门 TC2
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何在初始化的时候写入参数
- axis1-myeclipse/eclipse-入门级别-资源、流程、常见问题
- JavaFast企业级快速开发平台-常见问题,入门必读
- XML入门的常见问题(一)
- Engine中初始化许可常见问题归纳(转载)
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面快速入门 TC3
- axis1-myeclipse/eclipse-入门级别-资源、流程、常见问题