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

【教程】Direct3D9初级教程

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

【教程】Direct3D9初级教程

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

【教程】Direct3D9初级教程

前言: " P# Y6 Z' G8 E' Q0 O" n; a

5 Y+ G# |- A# U3 l" T& f+ t( Z这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。
+ ^: }5 e+ D% J1 C8 D
3 [; n1 }8 V% Y2 v3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。
# c) e, y" }7 q1 g7 K1 k: j, D/ H2 @+ ^
1 开发环境 % Y; j& g  Q$ x1 w0 U
- [& l1 B6 Z2 |2 L% r
本文选用VC++ 6.0做语言环境,建议安装Service Pack5补丁包。为了创建Direct3D程序,需要从微软网站下载安装DirectX SDK,我用的是最新的9.0版,大概200多兆,网址 http://www.microsoft.com/downloads/ 。安装完SDK后,开发环境就搭建好了。当然,要运行编译好的程序,DirectX9是必不可少的(微软已经在SDK中包含了DirectX9的安装文件)。 " c; r6 p( n. F7 p

9 T2 m2 F# E, T; lDirectX9 SDK为VC用户提供了一个程序向导,可以很方便地生成“空”的Direct3D程序。不过为了便于读者掌握Direct3D编程的基础知识,本文将以MFC单文档程序(SDI)为框架,在其上添加Direct3D绘图功能。
$ S$ Y, J% o+ K0 [3 f; H- d8 r5 t* n
2 使用COM组件 1 `0 {) b5 D3 v$ y# J" U# E
4 z) e. x+ S4 L3 I9 H( t' h
DirectX的功能都是以COM组件的形式提供的。COM是组件对象模型(Component Object Model)的简写,它是一种协议,用来实现软件模块间的二进制连接。当这种连接建立后,两个模块之间就可以通过称为“接口(Interface)”的机制来通信。我们常用的ActiveX控件就是一种COM组件。
5 m# H) U2 F# X: z( E% b" ~- j1 r# u
5 W0 Z- }/ Y4 X( v$ s: CCOM的实现细节相当复杂,完全可以写一本厚厚的专著。不过别担心,微软已经为我们最大限度地简化了COM的使用,即便你对COM一窍不通也没关系。作为Direct3D开发人员,只要了解接口及其用法就行了:所谓接口,其实就是一组特殊的C++对象,应用程序通过调用这些对象的成员函数,来访问COM组件,实现组件的功能。在COM术语中,这些成员函数被称作方法(Method)。虽然称呼变了,但其调用语法与普通的C++对象相比,并无二致。接口的特殊性在于它的生成和销毁都由系统完成,无须用户干预。 4 F$ L8 B9 h+ z

# j# y4 M- s' p! E* P在Direct3D编程中,我们要做的工作基本上可以归纳为:
+ D" D5 I1 }/ n6 ]8 F/ }) U! E. [
# p9 Z3 J' E- A! m$ K9 s( {调用适当的函数获取接口指针;
5 B9 k& p% J/ V* h4 C
0 N! z! q6 t! O/ C5 j调用接口的方法(成员函数)来完成所需功能;
% o( e$ j- P1 I: {
+ |) v. K/ v1 `+ L1 L8 O用完接口后,调用Release方法进行“释放”,注意释放顺序应该和获取它们的顺序相反。
) a" `' H) c1 J+ O9 @7 e) T
, c/ G, K* V6 T6 Q! A6 m$ ^2 A8 H
- l* U, c) a& k% F) m9 s3 第一个程序-初始化Direct3D
7 y  z0 l: L7 a" X5 D+ z4 w. e( I4 I+ X6 p
3.1 创建程序框架 1 q7 t7 \; L0 ?- A  c0 r
; r# p! e) E0 ]2 \$ s5 @  H
3.2 初始化Direct3D + |) R; E' `$ _

9 z- m. |$ P+ c3 o3 h5 V6 W3.3 渲染
* b3 J; _9 s( A4 k* E
$ v3 Z9 o# Z. `3.4 释放接口
2 G& N; s& P  u; b, I9 `# J/ w  G$ N5 k+ i% E% v& `7 V/ ]
4 画一个三角形 " T( p) A) d7 Q/ k% y  ~; d  }
& B* J# Z9 y9 Q5 {, I0 ^& A3 v. I6 @6 x
4.1 一些数学概念 " W# F  x; B2 x& W
6 a% W  `) b/ n1 D
4.2 画一个三角形 ! u, N2 ^0 g0 q1 [: J2 p
3 Y2 g; Z4 a$ k$ ]0 T
5 画一个三棱锥-索引缓存和Z缓存
( M; `1 h( b' j' A" i; C7 h& d! s
5 a" P. I  T$ T2 I) y5.1 什么是索引缓存 , E7 @8 E# H1 C) j9 v
+ `1 T" m2 m5 H# @' e; J  d
5.2 创建索引缓存
& `7 ^( N8 _: W( \2 P) A9 k7 p7 T8 ^7 m$ e7 n
5.3 渲染索引缓存 / G5 Z& u/ S7 z, j
+ G+ C( w* i9 Z
5.4 打开Z缓存 ! I0 ^/ y# P% M7 j8 U  M  K" U

2 d1 }1 p( N% J" D6 画一个圆锥-灯光和材质
; U$ U/ T1 Q5 Q2 e
: d/ s3 k4 I8 ^9 ~/ p$ U  J2 V  z+ G6.1基本概念 4 _& N2 H9 Y) ?8 q8 W+ j/ B

( M5 V: D0 L  M4 _0 _( G6.2 灯光
) |. ^9 B, T  V& p) }/ [1 n! h# S6 Z* C% _8 N, _8 S5 i! _
6.3 材质
. {. a  P8 Z. x" J' \- P$ H
- a; N- P: d: P6.4 画一个圆锥   q- q; w. I5 o1 S) `; a/ W9 c6 \3 R
$ I  ?6 y- z. F5 Z
6.5高洛德着色和平面着色
" H. U& u0 q' q% Y( d+ D. B; W* t
% _. Z6 e7 k3 w9 J5 x7 为圆锥添加纹理 " G, ]2 U3 z9 C  \: E
. B  M- _; b$ x
7.1 基本概念 , [" b- i* h$ m

8 a& W& ]9 `' s5 x0 L4 K7.2 创建纹理
. H" t( g5 d1 K0 B- P2 Q4 {) n4 Q0 ^# _0 ]
7.3 用纹理渲染
1 c( S- J& b5 a; P
( [, z& ^' X4 g5 e8 Mesh模型 * J$ U7 \+ _" _9 `- F: q

, r& p, F1 Z# Z5 s/ p8.1 什么是Mesh模型 . d. s/ s% _, i

: a+ J4 P# z& Q. m/ G8.2 绘制Mesh模型
0 D) F1 S* _& A. \2 z" r% M( o. i$ Q. j: n* A( C# E. W* o
9 显示文本 / h$ j1 m4 e7 e2 \+ P' v
7 m) W5 b6 ^: u2 {
10 Direct3D中的2D 1 A+ K& [( V. [' x5 s

" c' N+ a6 w1 {0 W$ Q' i+ t; @% b11 Direct3D的程序结构 ' D( v4 }, ?  N) U- n# r. X- }
( x/ S  C4 {$ |$ _1 L4 n# J5 e
. `' j& g0 Q: o
请注意: 3 p. S' G5 c1 s4 S7 j+ f

0 C" ^/ o4 n9 ^5 P$ w因为原文章使用PDF格式编写,且文章比较长,插图多,不太容易转贴,感兴趣的同志请从下列地址下载全文

本帖子中包含更多资源

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

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

使用道具 举报

6#
发表于 2009-12-1 23:24 | 只看该作者
引用第0楼shane007于2008-12-27 11:14发表的 【教程】Direct3D9初级教程 :
0 C) g/ w; [3 v8 X* m0 x1 F9 _前言:
1 A! P$ O( T& e5 _1 T8 g  t: Z. T/ J( Z
这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。
+ Y; O& v" J0 l8 ~" g- f
6 C6 G* ]- n; O& B+ h+ |3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。 9 V& F( W6 W) w
.......
& R1 c, H- x; V9 X5 C* r
5 ?, c' `! x  {: G) A4 o2 z
学习学习,最后问一个菜鸟级问题,我是不是要装visual basic?怎么装?
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

板凳
 楼主| 发表于 2009-4-11 20:14 | 只看该作者
引用第1楼灰色小狼于2009-04-11 15:57发表的  :
% k3 V/ l: _8 y0 e[s:23] 支持下,我们学的是opengl
: t) @8 r6 N( g3 p! G( f: _/ c
你能找点opengl的游戏文字显示的资料放在这里吗?
8 w' @6 z! M2 Z+ O, \% J也许对汉化有用。
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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