上一章我们学会了如何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;)

 

 

=.=再见

DirectX 初始化DirectX(第一方式)的更多相关文章

  1. DirectX 初始化DirectX(手写和红龙书里面的方式)

    上次介绍了如何初始化Direct3D,这次手写一次初始化代码,都是一样的方式不过看起来整洁一点. 创建一个Win32空项目添加一个空类增加以下代码即可. #include "CreateDe ...

  2. SharpDX初学者教程第3部分:初始化DirectX

    原文 http://www.johanfalk.eu/blog/sharpdx-beginners-tutorial-part-3-initializing-directx 在这部分中,我们将初始化D ...

  3. 魔兽争霸Ⅲ运行时不能初始化directX的错误解决

    运行魔兽争霸3不能初始化DirectX错误这样解决: 1:在运行中输入(win+r):dxdiag,查看显示栏,确定电脑已安装好directx 8.1以上,且下面的三个加速都已开启. 2:如果没有安装 ...

  4. const成员或者引用成员必须使用构造函数初始化列表的方式

    #include<iostream.h> class A { const int a; int b; }; void main() { A obja; }编译出现如下错误:error C2 ...

  5. C++使用初始化列表的方式来初始化字段

    几个月之前,接触Android recovery源代码的时候,看ScreenRecoveryUI类的时候,那时候C++基础还不是特别好,一直不明白以下的初始化方式: 下面这个是Recovery的一个构 ...

  6. 20140316 window live write 插件 推荐代码高亮插件 构造函数只能用初始化成员列表方式的例子

    1.window live write 插件:http://www.cnblogs.com/liuxianan/archive/2013/04/13/3018732.html 2.推荐代码高亮插件:W ...

  7. DirectX学习之第一个可运行的工程

    学习一门开发语言的第一件事情当然是搭建一个可运行的环境,然后运行一个可成功执行的案例. 本人在学习DirectX的第一个工程的时候,参考了雨凇MoMo的一篇文章(https://www.xuanyus ...

  8. PHP变量的初始化以及赋值方式介绍

    什么是变量 变量通俗的来说是一种容器.根据变量类型不同,容器的大小不一样,自然能存放的数据大小也不相同.在变量中存放的数据,我们称之为变量值. PHP 中的变量用一个美元符号后面跟变量名来表示.变量名 ...

  9. vector的几种初始化及赋值方式

    转自https://www.cnblogs.com/quyc/p/12857054.html (1)不带参数的构造函数初始化 //初始化一个size为0的vector vector<int> ...

随机推荐

  1. 验证docker的Redis镜像也存在未授权访问漏洞

    看到了这篇老外的博客:Over 30% of Official Images in Docker Hub Contain High Priority Security Vulnerabilities于 ...

  2. Hacker(25)----病毒攻防之认识病毒

    Internet中,计算机病毒是威胁计算机安全的程序.对于计算机病毒,用户不仅需要掌握其基础知识,还要认识常见的病毒及简单病毒制作方法.无论病毒基础还是制作简单病毒,用户需要掌握防御病毒的有效措施和专 ...

  3. PL/SQL语句块提高1+case语句

    set serveroutput on; declare --默认值的bianliang v_a ; -- v_b integer; --用stud.id 的类型 v_id stud.id%type; ...

  4. web开发常用样式

    1.div保持底部浮动(不受滚动条影响) position:fixed;_position:absolute;bottom:0px;_bottom:0px;_margin-top:expression ...

  5. BZOJ 1003 物流运输 (动态规划 SPFA 最短路)

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5590 Solved: 2293 [Submit][Stat ...

  6. C++Primer笔记(2)

    大型程序一般都是分为多个模块,由多人协作来进行开发的,其中还不可避免的会用到库.而各个模块代码以及库中会定义大量变量,而大量变量的命名,不可避免的会遇见“重名”的问题.“重名”的情况我们称之为命名空间 ...

  7. Jquery去除从数据库中查询到的内容含有的p标签

    $("#topic_content").html($("#topic_content").text()); 如果这个数据是通过循环遍历出的数据,就需要下面这个代 ...

  8. C#如何设置下拉COMMBOX为不可输入,只有下拉条目

    设置下拉框的DropDownStyle属性为DropDownList

  9. [Mac] 使用Mac时的一些技巧

    这篇博客就用来记录自己在使用Mac时学来的一些技巧吧! 1. 如何开启 Sticky key (在屏幕上显示输入的控制键)   就是这个东西啦,就是在视频演示的时候让别人看到自己按了什么控制键. 在s ...

  10. Linux Shell Scripting Tutorial (LSST) v2.0

    http://bash.cyberciti.biz/wiki/index.php?title=Main_Page