zoukankan      html  css  js  c++  java
  • 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

    =.=再见

    如果你感兴趣,你可以把你妹妹介绍给我
  • 相关阅读:
    c语言程序设计(学生成绩管理系统)————提供给计算机系c语言初学者参考
    C语言之指针排序
    C语言之冒泡法一
    C语言之统计字符
    C语言之while输出菱形
    C语言之do_while输出菱形
    C语言之素数的判断
    C语言之输出菱形
    基于RT-THREAD的定时鱼缸喂食器设计
    dx/dy=1/y’求其二阶导
  • 原文地址:https://www.cnblogs.com/plateFace/p/4843154.html
Copyright © 2011-2022 走看看