文档介绍:Direct3D9 初级教程-祝晓鹰余锋
Direct3D9 初级教程
作者:祝晓鹰余锋
版权归作者所有,非商业应用可免费使用本文档,
商业应用请同作者联系,Email:zhawk@
文章目录:
前言
1 开发环境
2 组件
3 第一个程序-初始化 Direct3D
创建程序框架
初始化 Direct3D
渲染
释放接口
4 画一个三角形
一些数学概念
画一个三角形
5 画一个三棱锥-索引缓存和 Z 缓存
什么是索引缓存
创建索引缓存
渲染索引缓存
打开 Z 缓存
6 画一个圆锥-灯光和材质
灯光
材质
画一个圆锥
7 为圆锥添加纹理
基本概念
创建纹理
用纹理渲染
8 Mesh 模型
什么是 Mesh 模型
绘制 Mesh 模型
9 显示文本
10 Direct3D 中的 2D
11 Direct3D 的程序结构
附注
Direct3D9 初级教程-祝晓鹰余锋
前言:
这篇教程是为初学者准备的,只要会简单的 VC++编程以及一点立体几何的基础知识即
可。通过它,可以了解到 Direct3D 的基本概念,学会绘制简单的几何图形,并掌握光源、
材质和纹理的基本用法。
3D 绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建
模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂
的数学知识。
由于我也是初学 Direct3D 不久,难免有疏漏或错误之处,读者如果有什么意见或建议,
请发信至 zhawk@ 。
1 开发环境
本文选用 VC++ 做语言环境,建议安装 Service Pack5 补丁包。为了创建 Direct3D 程
序,需要从微软网站下载安装 DirectX SDK,我用的是最新的 版,大概 200 多兆,网址
nloads/ 。安装完 SDK 后,开发环境就搭建好了。当然,要运
行编译好的程序,DirectX9 是必不可少的(微软已经在 SDK 中包含了 DirectX9 的安装文件)。
DirectX9 SDK 为 VC 用户提供了一个程序向导,可以很方便地生成“空”的 Direct3D
程序。不过为了便于读者掌握 Direct3D 编程的基础知识,本文将以 MFC 单文档程序(SDI)
为框架,在其上添加 Direct3D 绘图功能。
2 组件
DirectX ponent
Object Model)的简写,它是一种协议,用来实现软件模块间的二进制连接。当这种连接建
立后,两个模块之间就可以通过称为“接口(Interface)”的机制来通信。我们常用的 ActiveX
组件。
COM 的实现细节相当复杂,完全可以写一本厚厚的专著。不过别担心,微软已经为我
的使用, 一窍不通也没关系。作为 Direct3D 开发
人员,只要了解接口及其用法就行了:所谓接口,其实就是一组特殊的 C++对象,应用程序
通过调用这些对象的成员函数, 组件,实现组件的功能。术语中,这
些成员函数被称作方法(Method)。虽然称呼变了,但其调用语法与普通的 C++对象相比,
并无二致。接口的特殊性在于它的生成和销毁都由系统完成,无须用户干预。
在 Direct3D 编程中,我们要做的工作基本上可以归纳为:
调用适当的函数获取接口指针;
调用接口的方法(成员函数)来完成所需功能;
用完接口后,调用 Release 方法进行“释放”,注意释放顺序应该和获取它们的顺
序相反。
Direct3D9 初级教程-祝晓鹰余锋
3 第一个程序-初始化 Direct3D
在本节中,我们将编写一个简单的 Direct3D 程序,它在 MFC 单文档程序的基础上,生
成一个蓝色背景的 Direct3D 窗口。通过该例程,我们可以了解 Direct3D 的初始化过程。
创建程序框架
进入 VC,新建一个工程 d3d001,工程类型选“MFC AppWizard (exe)”,即 MFC 应用
程序,然后把程序类型设置为“Single document”-单文档,其余选项使用缺省设置即可。
之所以选择单文档程序,是为了借用 MFC 的界面和消息处理机制,至于文档和视