设为首页收藏本站官方微博

【教程】Direct3D9初级教程

[复制链接]
查看: 5133|回复: 5
打印 上一主题 下一主题

【教程】Direct3D9初级教程

跳转到指定楼层
楼主
发表于 2008-12-27 11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【教程】Direct3D9初级教程

前言: & h5 V9 n5 D. f3 L/ w  e# ]
- {& m& R# ?# P9 l, n5 s% ^% r
这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。
! c$ s7 w0 l3 A2 x) F7 ]1 N) Z2 d4 k. k. |8 O
3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。
! O+ Z+ ^; S; G
4 a+ R5 }7 S) r# \  t1 开发环境
' n& ~# X1 {  d8 f, O" K* _( w. n1 `8 G
本文选用VC++ 6.0做语言环境,建议安装Service Pack5补丁包。为了创建Direct3D程序,需要从微软网站下载安装DirectX SDK,我用的是最新的9.0版,大概200多兆,网址 http://www.microsoft.com/downloads/ 。安装完SDK后,开发环境就搭建好了。当然,要运行编译好的程序,DirectX9是必不可少的(微软已经在SDK中包含了DirectX9的安装文件)。 ; V) l  i7 Q. T3 G% @
% ^. L# y6 p# \, S) P0 Z$ u, v! V+ @
DirectX9 SDK为VC用户提供了一个程序向导,可以很方便地生成“空”的Direct3D程序。不过为了便于读者掌握Direct3D编程的基础知识,本文将以MFC单文档程序(SDI)为框架,在其上添加Direct3D绘图功能。 6 q% L6 o" _2 `0 [/ c% G

- z: c8 C3 D9 B! o; v2 使用COM组件 9 o& d0 c3 Q6 w. D6 p0 C6 }5 r
/ D8 g9 x; X6 C; j" R7 m  W: [! F# \6 V
DirectX的功能都是以COM组件的形式提供的。COM是组件对象模型(Component Object Model)的简写,它是一种协议,用来实现软件模块间的二进制连接。当这种连接建立后,两个模块之间就可以通过称为“接口(Interface)”的机制来通信。我们常用的ActiveX控件就是一种COM组件。
1 m/ |9 ?) p. [6 J: l' v8 h/ t- Q0 Z* [- M1 d* O
COM的实现细节相当复杂,完全可以写一本厚厚的专著。不过别担心,微软已经为我们最大限度地简化了COM的使用,即便你对COM一窍不通也没关系。作为Direct3D开发人员,只要了解接口及其用法就行了:所谓接口,其实就是一组特殊的C++对象,应用程序通过调用这些对象的成员函数,来访问COM组件,实现组件的功能。在COM术语中,这些成员函数被称作方法(Method)。虽然称呼变了,但其调用语法与普通的C++对象相比,并无二致。接口的特殊性在于它的生成和销毁都由系统完成,无须用户干预。
; ~/ }2 o1 \0 E) f! ]
6 \3 _( f* F% y3 w0 E' n在Direct3D编程中,我们要做的工作基本上可以归纳为:   c/ h; z: c+ y0 q* N) j6 I
- V! H" s. @+ |* C
调用适当的函数获取接口指针;
- F* J/ [6 C9 Y( H0 F! `( j, v8 G, U0 |
调用接口的方法(成员函数)来完成所需功能;
; R/ x% w2 S& G) c2 \( |+ k; r+ ?- X2 q# J! S
用完接口后,调用Release方法进行“释放”,注意释放顺序应该和获取它们的顺序相反。 ' P. Q1 q  j  t- r1 j) m6 P
- b+ J0 x( m" U: _$ g
! z- ]3 ~' X! ^
3 第一个程序-初始化Direct3D
) y5 |2 f' Z2 q9 O; I- i8 q$ A. Q9 u
3.1 创建程序框架 5 f/ W  M! F( G3 c; q
& v7 i6 n# r+ W( i6 v8 ^& O
3.2 初始化Direct3D
; Q, J& M. l! c3 x, n' l* V+ O8 l% F
3.3 渲染
/ n8 c" q* \& \- E
: k& ^8 f- i  O3.4 释放接口
) W$ z( W* `$ W8 @" @- A  v  V4 U
4 画一个三角形
8 c6 \. ]" b# C' M
$ h0 m" s1 v# e7 n4.1 一些数学概念
' j5 I1 b6 [$ V' S( ~% I. l7 b: S7 C/ u) i
4.2 画一个三角形
" P7 M5 e7 Z6 _+ X0 \1 W( N; q6 u' v! r+ N* n2 i
5 画一个三棱锥-索引缓存和Z缓存 - Q* C* G; S5 m* v2 Q

; B! x, L0 F8 n* n8 G2 B* K5 t5.1 什么是索引缓存
9 P8 D7 u, E2 g8 ~4 b1 d; Q9 l- I8 K
5.2 创建索引缓存 % [) @3 e  _! {$ E" A( h

& |5 A, G7 x7 y3 P: i" T$ l8 g5.3 渲染索引缓存
- J6 h, W7 M* A; j& W) @6 Y; K! D
! I4 w" V; R5 \; f5.4 打开Z缓存
! c+ X' c2 d+ W# ]1 U! Y& T( d
* j( {: I; @. L' c$ q* G6 画一个圆锥-灯光和材质 : {% ]4 A) g% |9 Q! M, {

* J1 p* s% J6 W7 s6.1基本概念 9 |4 l3 O6 V; J, G' d3 ]
- Z# b" a2 Q% g1 I  x6 q0 R
6.2 灯光
( i6 k+ z- c! j, T& w, O7 a7 \* ?3 [* @" j- H* q" H7 u9 r/ D' q% |
6.3 材质 / v0 E6 S: d7 C( J

- K( f. _  i# a, {  j6.4 画一个圆锥 - J2 h$ E2 T% {

+ T* \! C5 s$ i+ j( S6.5高洛德着色和平面着色
6 n* n1 N( D2 D6 ^% H# X3 n  l* g5 A) y9 Q+ B
7 为圆锥添加纹理 , X, N8 M- A2 B! w4 x
/ {& W3 A, R( S) F* d8 G) K
7.1 基本概念 9 z8 Z" j- W/ ^7 X, Y5 \* m/ i2 C
7 f: w. n' G( M" s, f2 b( \' U
7.2 创建纹理 3 Q% W, O, R! ?" Q0 J
; C4 m& R) t/ B
7.3 用纹理渲染 2 C: e8 n( v# m- u9 L7 A1 L

, c: c5 D4 B2 e# I" Z3 g8 Mesh模型
/ j! D, h3 G( o) `: X9 d0 Z# |7 A' @: B1 p$ q! z' z
8.1 什么是Mesh模型
: {5 z) L  i6 S3 A, F) G4 U0 w8 g: A$ Z' ~" O3 ]4 D: |8 Z
8.2 绘制Mesh模型
7 F( {- d5 j2 l* c; e; V% e
3 g4 F8 ?) E) j. F9 显示文本 % ]8 l6 X# L$ ~4 s
9 f& A$ k5 T$ h0 U: |9 r
10 Direct3D中的2D
3 y1 ~: d3 m% v2 a# o' Y2 K2 }3 U& [  i
11 Direct3D的程序结构
& l  c) t1 j+ X$ [/ E' R3 o3 _
+ N  u& h. w2 i9 V- e! Z* d
$ A, N" E! |' Q. k- G请注意:
8 I# Y2 c" p; x& X6 S4 F3 p/ I8 e- m4 F: Q3 E8 `
因为原文章使用PDF格式编写,且文章比较长,插图多,不太容易转贴,感兴趣的同志请从下列地址下载全文

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-4-11 15:57 | 只看该作者
[s:23] 支持下,我们学的是opengl
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-4-11 20:14 | 只看该作者
引用第1楼灰色小狼于2009-04-11 15:57发表的  :3 v- ~- O/ @6 O$ r% X! P/ w
[s:23] 支持下,我们学的是opengl

: H# d6 F6 O" X/ o* S2 Z; ^你能找点opengl的游戏文字显示的资料放在这里吗?
2 T& i& X( v6 W) n也许对汉化有用。
回复 支持 反对

使用道具 举报

地板
发表于 2009-4-12 11:17 | 只看该作者
ok,我找找看
回复 支持 反对

使用道具 举报

5#
发表于 2009-12-1 11:12 | 只看该作者
正在学习,谢谢
回复 支持 反对

使用道具 举报

6#
发表于 2009-12-1 23:24 | 只看该作者
引用第0楼shane007于2008-12-27 11:14发表的 【教程】Direct3D9初级教程 :6 C$ |) L: a) `  t
前言: 7 o2 P' O1 Q7 J

" p! L! b7 |3 E3 m这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。
3 E4 n& j- N% y  X  ?; q) y* t. J: H1 t/ y; g& E1 G6 c, }
3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。
+ d2 Y$ L4 N; m.......
& e" Y, R' r# ?7 J% |

) a# p# V" g( [/ J& [& ^  n) J学习学习,最后问一个菜鸟级问题,我是不是要装visual basic?怎么装?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表