DirectX编程入门

初始化一个D3D对象

#include <d3d9.h>
#pragma comment(lib,"d3d9.lib")

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
LPDIRECT3D9 d3d = NULL;

if(NULL == (d3d=Direct3DCreate9(D3D_SDK_VERSION)))
{
  MessageBox(NULL,"建立Direct3D对象失败","信息",MB_OK);
  return 0;
}

d3d->Release();
return 0;
}

说明:
LPDIRECT3D9 d3d = NULL; 声明一个Direct3D对象.将它的初始值设为0.然后通过Direct3DCreate9函数建立起这个Direct3D对象.D3D_SDK_VERSION是版本的检查。

d3d->Release();将对象释放。

其实这个程序什么也没有做。只是演示如何建立和释放一个Direct3D对象。
-------------------------------------------------------------
取得显卡数

上一篇讲了如何初始化一个Direct3D对象.初始化一个d3d对象之后,我们就可以用Direct3D的IDirect3D接口了.
在IDirect3D接口里有许多方法可以调用.比如用GetAdapterCount()可以得到显卡数.代码如下:

#include <d3d9.h>
#pragma comment(lib,"d3d9.lib")

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
LPDIRECT3D9 d3d = NULL;  
char buff[255];
UINT num;

if(NULL == (d3d=Direct3DCreate9(D3D_SDK_VERSION)))  
{
  MessageBox(NULL,"建立Direct3D对象失败","信息",MB_OK);
  return 0;
}

num = d3d->GetAdapterCount();
wsprintf(buff,"你有%d块显卡",num);
MessageBox(NULL,buff,"信息",MB_OK);
d3d->Release();
return 0;
}

说明:
程序中用wsprintf函数可以把数字转换成字符,然后用MessageBox显示.程序的最后仍用Release()来释放d3d对象.
-------------------------------------------------------------
取显示器的信息

用IDirect3D的GetAdapterDisplayMode方法可以取得显示器的一些信息.通过指向一个D3DDISPLAYMODE结构的指针来取得这些信息.下面程序演示这个功能.

#include <d3d9.h>
#include <stdio.h>
#pragma comment(lib,"d3d9.lib")

char buff [255];
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
LPDIRECT3D9  d3d = NULL;
D3DDISPLAYMODE d3ddm;
if(NULL == (d3d = Direct3DCreate9(D3D_SDK_VERSION)))
{
  MessageBox(NULL,"建立Direct3D对象失败","信息",MB_OK);
  return 0;
}

if(FAILED(d3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3ddm)))
{
  MessageBox(NULL,"GetAdapterDisplayMode时失败","信息",MB_OK);
  return 0;
}

wsprintf(buff,"你好,关于你的显示器信息如下/n/n  分辨率是 %dX%d/n  刷新率是 %d/n  D3DFOAT值为 %d",d3ddm.Width,d3ddm.Height,d3ddm.RefreshRate,d3ddm.Format);
MessageBox(NULL,buff,"信息",MB_OK);
return 0;
}

-------------------------------------------------------------
CheckDepthStencilMatch方法

CheckDepthStencilMatch方法是检查配适器(显卡)是否支持你指定的d3d格式.通俗点讲就是比如是否支持32位真彩色等的检查了.DepthStencilMatch我们可以简单的翻译成"深度缓冲"吧,示例代码如下:

#include <d3d9.h>
#pragma comment(lib,"d3d9.lib")

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
IDirect3D9* d3d = NULL;
if(NULL == (d3d = Direct3DCreate9(D3D_SDK_VERSION)))
{
  MessageBox(NULL,"Direct3DCreate9时失败","信息",MB_OK);
  return 0;
}

if(d3d->CheckDepthStencilMatch(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,D3DFMT_R5G6B5,D3DFMT_R5G6B5,D3DFMT_D16) != D3D_OK)
{
  MessageBox(NULL,"你的深度缓冲不支持你指定的格式","信息",MB_OK);
  return 0;
}

MessageBox(NULL,"很好,你的显卡支持你指定的D3D格式","信息",MB_OK);
d3d->Release();
return 0;
}

其中D3DFMT_R5G6B5这个数值是从上个例子中用GetAdapterDisplayMode方法得到的,是我的显卡的格式,也许你的显卡和我的不一样,你可以用GetAdapterDisplayMode取得自己的显卡信息。具体的可以看MSDN。关于CheckDepthStencilMatch方法的具体参数也可以看MSND。我写这个贴子只是用最简单的方法来举例下Direct3D里的方法调用,给初学者能够入门,具体讲深了我也讲不清。呵。:)
今天看了下Opengl,感觉比用DirectX入门简单了一些。不过我想你如果学学在DirectX上开发去学那个也应该很简单的。Direct3D里的内容很多也很复杂。我们现在学的只是建立了一个IDirect3D接口,调用一下IDirect3D接口上的方法,还没有到真正用它“作简单的三维图”。

IDirect3D9接口主要作用就是建立基本的3d环境和对显卡的显能,3D格式那些进行测试和取得等等。。。。

DirectX编程入门相关推荐

  1. c#/winform Directx编程入门之实现立方体

    c# directx编程入门之实现立方体 一.Directx简介      Directx是微软公司开发的一套功能丰富的底层API ,由C++编写,它可让以Windows为平台的游戏或多媒体程序获得更 ...

  2. DirectX游戏编程入门——前言

    本系列文章由 net_assassin 编写,转载请注明出处. http://blog.csdn.net/net_assassin/article/category/1100363 作者:net_as ...

  3. DirectX游戏编程入门——第一部分(Windows和DirectX游戏编程引言)——认识Windows

    本系列文章由 net_assassin 编写,转载请注明出处. http://blog.csdn.net/net_assassin/article/category/1100363 作者:net_as ...

  4. 游戏编程入门(1) -- 精灵 ISprite

        对于游戏编程而言,我也是个初学者,这个游戏编程入门系列的文章,就当作是我在学习游戏编程的笔记和阶段小结吧.我们先从最简单的"精灵"开始,暂时我们不需要考虑DirectX或是 ...

  5. OpenGL编程入门学习

    OpenGL编程入门学习  非常详细的教程,很适合初学者 本文转自:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html === ...

  6. 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体

    本文是 系列笔记DirectX部分的第2篇,上一篇参见 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架 这个示例增加了一些实际的内容,首先是绘制一个颜色随机变幻的彩色立方体,其二是显示 ...

  7. 游戏编程入门(10):播放数字声音效果

    本章内容包括: 如何使用 Win32 API 播放波形声音 如何将波形声音合并到现有的游戏中 接上文 游戏编程入门(9):开发 Henway(小鸡过马路) 游戏 播放波形声音 Win32 API 提供 ...

  8. python编程求圆的面积案例_Python实用案例编程入门:第七章 调式手段

    本章的主题为调试手段,这是程序开发必不可少的步骤,也是占用时间最多的环节.在程序员的正常开发工作中,调试工作至少占据1/3的时间,而实际编码工作相对占用实际比较少.因此,无论您是初学者,还是编程兴趣爱 ...

  9. 《C++游戏编程入门(第4版)》——1.12 习题

    本节书摘来自异步社区出版社<C++游戏编程入门(第4版)>一书中的第1章,第1.1节,作者:[美]Michael Dawson(道森),更多章节内容可以访问云栖社区"异步社区&q ...

最新文章

  1. pandas数据预处理(标准化归一化、离散化/分箱/分桶、分类数据处理、时间类型数据处理、样本类别分布不均衡数据处理、数据抽样)
  2. 编译nginx时的两个报错
  3. 开源 SPL 优化报表应用应对没完没了
  4. senseFly为eBee农用无人机装备多谱段传感器
  5. Serverless 工程实践 | 自建 Apache OpenWhisk 平台
  6. MSU发布2020年度4K编码效率评测结果
  7. 单例模式---设计模式(一)
  8. linux下遍历目录树方法总结,linux下遍历目录树方法总结(下)
  9. 实例8:python
  10. 计算机网络配置调试综合实验,计算机网络设备配置与调试课程标准.doc
  11. P1262 间谍网络
  12. Top 10 Security Issue Solution
  13. leetcode刷题日记-喧闹和富有
  14. 计算机id dns知识,智能DNS解析知识集锦
  15. RobotStudio动态夹具的创建
  16. 剖析:从软件加密到软件授权保护
  17. 爬取网易云的音乐信息
  18. 【推拉框-手风琴】vue3实现手风琴效果的组件
  19. 优化器介绍—SGD、Adam、Adagrad
  20. C语言笔记 · 输入函数(scanf(),getchar(),getche(),getch(),gets())

热门文章

  1. linux开机更改root密码怎么办,Linux(RedHat) 开机时修改root密码
  2. 给你一个登录页面,你该如何做渗透测试呢?
  3. Virtualbox Ubuntu添加虚拟硬盘
  4. opengl绘制文字
  5. Stable Diffusion 依照关键词生成动画的方法
  6. 乐山计算机学校家长会,乐山市计算机学校家校共育助成长
  7. 贪心算法之克鲁斯卡尔算法
  8. 从零开始前端学习[32]:css3中新增加的一些文本属性
  9. 坐标转换,屏幕坐标转UI坐标
  10. python3 27270网站美女爬虫(二)