DirectX编程入门
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编程入门相关推荐
- c#/winform Directx编程入门之实现立方体
c# directx编程入门之实现立方体 一.Directx简介 Directx是微软公司开发的一套功能丰富的底层API ,由C++编写,它可让以Windows为平台的游戏或多媒体程序获得更 ...
- DirectX游戏编程入门——前言
本系列文章由 net_assassin 编写,转载请注明出处. http://blog.csdn.net/net_assassin/article/category/1100363 作者:net_as ...
- DirectX游戏编程入门——第一部分(Windows和DirectX游戏编程引言)——认识Windows
本系列文章由 net_assassin 编写,转载请注明出处. http://blog.csdn.net/net_assassin/article/category/1100363 作者:net_as ...
- 游戏编程入门(1) -- 精灵 ISprite
对于游戏编程而言,我也是个初学者,这个游戏编程入门系列的文章,就当作是我在学习游戏编程的笔记和阶段小结吧.我们先从最简单的"精灵"开始,暂时我们不需要考虑DirectX或是 ...
- OpenGL编程入门学习
OpenGL编程入门学习 非常详细的教程,很适合初学者 本文转自:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html === ...
- 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体
本文是 系列笔记DirectX部分的第2篇,上一篇参见 逐梦旅程学习笔记 DirectX开发入门01:应用程序基本框架 这个示例增加了一些实际的内容,首先是绘制一个颜色随机变幻的彩色立方体,其二是显示 ...
- 游戏编程入门(10):播放数字声音效果
本章内容包括: 如何使用 Win32 API 播放波形声音 如何将波形声音合并到现有的游戏中 接上文 游戏编程入门(9):开发 Henway(小鸡过马路) 游戏 播放波形声音 Win32 API 提供 ...
- python编程求圆的面积案例_Python实用案例编程入门:第七章 调式手段
本章的主题为调试手段,这是程序开发必不可少的步骤,也是占用时间最多的环节.在程序员的正常开发工作中,调试工作至少占据1/3的时间,而实际编码工作相对占用实际比较少.因此,无论您是初学者,还是编程兴趣爱 ...
- 《C++游戏编程入门(第4版)》——1.12 习题
本节书摘来自异步社区出版社<C++游戏编程入门(第4版)>一书中的第1章,第1.1节,作者:[美]Michael Dawson(道森),更多章节内容可以访问云栖社区"异步社区&q ...
最新文章
- pandas数据预处理(标准化归一化、离散化/分箱/分桶、分类数据处理、时间类型数据处理、样本类别分布不均衡数据处理、数据抽样)
- 编译nginx时的两个报错
- 开源 SPL 优化报表应用应对没完没了
- senseFly为eBee农用无人机装备多谱段传感器
- Serverless 工程实践 | 自建 Apache OpenWhisk 平台
- MSU发布2020年度4K编码效率评测结果
- 单例模式---设计模式(一)
- linux下遍历目录树方法总结,linux下遍历目录树方法总结(下)
- 实例8:python
- 计算机网络配置调试综合实验,计算机网络设备配置与调试课程标准.doc
- P1262 间谍网络
- Top 10 Security Issue Solution
- leetcode刷题日记-喧闹和富有
- 计算机id dns知识,智能DNS解析知识集锦
- RobotStudio动态夹具的创建
- 剖析:从软件加密到软件授权保护
- 爬取网易云的音乐信息
- 【推拉框-手风琴】vue3实现手风琴效果的组件
- 优化器介绍—SGD、Adam、Adagrad
- C语言笔记 · 输入函数(scanf(),getchar(),getche(),getch(),gets())