上一章我们学会了如何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;)
=.=再见
原文链接: https://www.cnblogs.com/plateFace/p/4843154.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/222390
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!