上一章我们学会了如何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. 使用openCV的静态库编译

    转载请注明出处: http://www.cnblogs.com/sysuzyq/p/6183568.html By 少侠阿朱 摘要: 本文主要讲述如何使用opencv静态库进行编译,生成脱离openc ...

  2. oracle 同样数据删除(仅仅留一条)

    DELETE FROM reg_user t1 WHERE user_name='9527008' and rowid > ( SELECT min(rowid) FROM location t ...

  3. Linux gdb调试入门

    没有使用过gdb调试过程序的觉得gdb是个很神奇的东东,如果你使用它调试一次保证你想忘记它都难,下面看看它的庐山真面目吧! GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具. ...

  4. 解决vsftpd 530 Permission denied报错

    虚拟机装好RedHat后,准备使用filezilla连接,输入IP地址,root用户,密码,快速连接,报错: 故障排除: 1.首先检查系统是否开启了vsftp服务,如果没有开启,先开启该服务. 方法1 ...

  5. android R 文件生成不了

    在android中比较头疼的是R文件生成不了.今天总结一下R文件生成不了的一些原因和解决方法 1. xml文件有错, 如果在res文件中的xml文件有错,android不会自动生成R文件,此时仔细查看 ...

  6. linux shell脚本连接oracle查询数据插入文件和日志文件中

    #!/bin/sh sqlplus "用户名/密码@数据库"<<EOF  或者只有一个库的 :sqlplus "用户名/密码"<<EOF ...

  7. VC中遍历进程并获取进程信息

    代码如下: /***************************************************/ /* 函数: 遍历进程信息 /* 参数:进程名称 例如: aaa.exe /* ...

  8. js处理数学经典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. [FML]学习笔记二 PAC Learning Model

    对于一个concept class C,如果存在一个算法A和一个多项式poly(.,.,.,.),有对于任意的ε>0.δ>0以及X的任意分布D和任何target concept C,当sa ...

  10. 元组:戴上了枷锁的列表 - 零基础入门学习Python013

    元组:戴上了枷锁的列表 让编程改变世界 Change the world by program 元组:戴上了枷锁的列表 由于和列表是近亲关系,所以元组和列表在实际使用上是非常相似的. 我们这节课主要通 ...