DirectX 初始化DirectX(第一方式)

201415117565374179

 

上一章我们学会了如何C++Win32项目中搭建DirectX开发环境, 那么下面来写代码初始化DirectX吧O(∩_∩)O~。 首先你创建一个Win32程序,点击运行你可以看见一个window窗口程序,我创建的项目名叫 InitDirectX, 如下图

image

首先配置好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函数,传入窗口句柄

image

 

七、 在窗口处理函数中加入,Render渲染函数,Cleanup释放函数

image

 

=.=然后运行程序你就能看见窗口已经是一片黄色啦,我去掉了窗口的菜单栏(wcex.lpszMenuName    = NULL;)

image

 

 

=.=再见

posted @ 2015-09-28 00:35  盘子脸  阅读(916)  评论(0编辑  收藏  举报