上一章我们学会了如何C++Win32项目中搭建DirectX开发环境, 那么下面来写代码初始化DirectX吧O(∩_∩)O~。 首先你创建一个Win32程序,点击运行你可以看见一个window窗口程序,我创建的项目名叫 InitDirectX, 如下图
首先配置好DirectX开发环境, 然后点击进入InitDirectX.cpp写初始化的代码.
一、 引入头文件d3d9.h
#include <d3d9.h>
二、 定义DirectX的接口对象,设备对象
LPDIRECT3D9 g_pD3D = NULL; //定义D3D9接口对象 LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; //定义D3D9接口设备指针
三、 编写初始化DirectX函数InitD3D
//初始化Direct3D方法 HRESULT InitD3D(HWND hWnd) { //创建DirectX接口对象 if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))){ return E_FAIL; } //清空内存 D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp,sizeof(d3dpp)); d3dpp.Windowed = TRUE; //True窗口显示模式, FALSE全屏显示模式 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //指定后台缓冲区的内容复制到前台的缓存中,一般设置成D3DSWAPEFFECT_DISCARD d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; //设置后台缓冲区的保存像素格式 //创建设备 if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp, &g_pd3dDevice))) { return E_FAIL; } return S_OK; }
四、 编写是否DirectX函数
//释放DirectX VOID Cleanup() { if(g_pd3dDevice != NULL) { g_pd3dDevice->Release(); } if(g_pD3D != NULL) { g_pD3D->Release(); } }
五、 编写渲染主函数,以后绘制东西都在这个函数中
//渲染 VOID Render() { if(NULL == g_pd3dDevice) { return; } //用某种颜色清空场景 g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,168,165),1.0f,0); if(SUCCEEDED(g_pd3dDevice->BeginScene())) { //开始写渲染部分,在这里绘制物体 g_pd3dDevice->EndScene(); } g_pd3dDevice->Present(NULL,NULL,NULL,NULL); }
六、 在InitInstance函数中加入初始化InitD3D函数,传入窗口句柄
七、 在窗口处理函数中加入,Render渲染函数,Cleanup释放函数
=.=然后运行程序你就能看见窗口已经是一片黄色啦,我去掉了窗口的菜单栏(wcex.lpszMenuName = NULL;)
=.=再见
时间: 2025-01-04 05:35:26