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

【教程】Direct3D9初级教程

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

【教程】Direct3D9初级教程

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

【教程】Direct3D9初级教程

前言:
6 a$ z4 p* T$ H6 x5 S+ ?  v1 J" \8 O( V6 C
这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。
1 B% ]# c& r( I- A% |6 s- D8 q
- Y7 h1 A$ X  U6 Z( C) y3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。
9 K* f( r4 t! Y' f/ ], z% o, S1 H& B* X- h
1 开发环境
  d7 `. u% B' |2 V( j0 f
- A1 y6 x# g& `. G# m, \本文选用VC++ 6.0做语言环境,建议安装Service Pack5补丁包。为了创建Direct3D程序,需要从微软网站下载安装DirectX SDK,我用的是最新的9.0版,大概200多兆,网址 http://www.microsoft.com/downloads/ 。安装完SDK后,开发环境就搭建好了。当然,要运行编译好的程序,DirectX9是必不可少的(微软已经在SDK中包含了DirectX9的安装文件)。 & K; I, a% T' G5 `5 c1 Y8 v1 Z
8 A' Z5 S0 u  D# w8 S5 W% K
DirectX9 SDK为VC用户提供了一个程序向导,可以很方便地生成“空”的Direct3D程序。不过为了便于读者掌握Direct3D编程的基础知识,本文将以MFC单文档程序(SDI)为框架,在其上添加Direct3D绘图功能。 % \# {! H" U7 V' b
0 s9 P9 o4 s% Y! U6 Q: ]
2 使用COM组件
. h7 k8 x- Q- _4 w" E  D. ?
8 S+ K9 ~; ]" M" ODirectX的功能都是以COM组件的形式提供的。COM是组件对象模型(Component Object Model)的简写,它是一种协议,用来实现软件模块间的二进制连接。当这种连接建立后,两个模块之间就可以通过称为“接口(Interface)”的机制来通信。我们常用的ActiveX控件就是一种COM组件。
+ {9 ^- @1 {2 H: ~0 U8 M5 A) E3 |4 o' A+ ?
COM的实现细节相当复杂,完全可以写一本厚厚的专著。不过别担心,微软已经为我们最大限度地简化了COM的使用,即便你对COM一窍不通也没关系。作为Direct3D开发人员,只要了解接口及其用法就行了:所谓接口,其实就是一组特殊的C++对象,应用程序通过调用这些对象的成员函数,来访问COM组件,实现组件的功能。在COM术语中,这些成员函数被称作方法(Method)。虽然称呼变了,但其调用语法与普通的C++对象相比,并无二致。接口的特殊性在于它的生成和销毁都由系统完成,无须用户干预。 1 E/ h; f0 [' H  L6 H" v  W

+ U0 a, T% ~! |在Direct3D编程中,我们要做的工作基本上可以归纳为: ) J$ [( G4 l* s, V5 t( L

3 K5 ?# E  W! u3 J7 f- T调用适当的函数获取接口指针; 3 I! ]1 g, W' O/ l' U
! l) [! D- f. i
调用接口的方法(成员函数)来完成所需功能; * Q2 F" x) G3 x. N  z2 C& z
  f6 Q! Q( m. r3 ~2 U0 ]3 w
用完接口后,调用Release方法进行“释放”,注意释放顺序应该和获取它们的顺序相反。 ( g+ m/ D9 Z( c
! `8 y; |1 r: C9 S8 [$ U8 t+ y
( f- I6 N7 O) i9 I" a
3 第一个程序-初始化Direct3D
4 e  C5 A2 K" Z6 Y0 S& G
$ [) S# n( h* h' v3.1 创建程序框架
+ e& S8 j0 M4 p* s6 v8 E$ R% g/ E( g! h. |
3.2 初始化Direct3D   q8 H) z& ]' B8 G( {

3 L, ?# h) U* q3 q2 E3.3 渲染 & w7 f8 R1 t2 G/ @# F- p

8 w+ a# K4 w0 M+ C! v/ B8 f* p3.4 释放接口
; j6 _. q4 D. V' ]3 `" v$ u
1 \: M0 _7 i/ k& {3 w1 ?/ ~4 画一个三角形 # {. D  m3 Q3 K& r* V' w5 [
6 D- B- G4 c' m8 R6 a$ @
4.1 一些数学概念 1 A; P3 a( d6 Z& ]7 x$ G

- i( I* e. j& k4.2 画一个三角形
$ B4 B) v1 C; s! Z& h% a% n6 j) L; h, l7 t2 |
5 画一个三棱锥-索引缓存和Z缓存 6 S$ E' c/ R$ ~& b9 c; a7 j% v$ f
9 v: k# e8 S& ]+ e
5.1 什么是索引缓存 : _' ^. j( z* ]  K  |

; O; P2 ~: z: F) d! L5.2 创建索引缓存
' c  f/ g2 M$ E# m1 X+ E5 X, D. d( t. J7 P3 I7 |+ Y0 w* z; e
5.3 渲染索引缓存 7 {  P0 u! c: w6 _. ~# F5 l
0 ]1 Y+ c7 b. K9 S  l
5.4 打开Z缓存
- a4 }* q( U! X  r$ Q4 N2 K; k3 O3 k! G# {- D7 F2 K
6 画一个圆锥-灯光和材质   J, N9 M+ u  l! T& T$ J
9 N+ a! J5 T5 S, T/ d' Q7 e7 _
6.1基本概念 ( K- ]! c4 ~: \- v- b. @  ~

: M% ?' }& l5 J, S# M: d6.2 灯光 * x, I1 L% r6 ^0 d5 x, R$ d
# x" T( x) F6 W6 Z$ r7 \" Y2 `) t' @
6.3 材质 % h8 \" G" p: }/ @- \. x$ z2 J2 t# _/ V
( l- k2 o$ s. O. R+ I3 K
6.4 画一个圆锥
! N& \' x0 V# y
6 \, A# c9 }% O( I! j0 y: w5 J% u6.5高洛德着色和平面着色 . ], p7 d0 O8 @
$ x+ u6 p* ?9 i' j
7 为圆锥添加纹理   S4 n+ `, |) z
. z+ `3 n1 h; _( m$ P& E
7.1 基本概念 " e- g' E& `: V7 |) D
9 ]9 t) T1 {6 O- N1 k
7.2 创建纹理
! M3 M2 N6 f5 b+ \. o5 U; H. Z
+ h6 w6 x% r+ Q" S+ S7.3 用纹理渲染
+ j! ~+ j* H- h5 g/ X2 d! q% n: W! O: u1 H
8 Mesh模型
: \9 S, ^3 S& B5 {
. X3 _: S5 G$ T; p( X8.1 什么是Mesh模型
$ F* H% l( @/ o$ D3 ^3 g' k* [4 c6 o2 t
8.2 绘制Mesh模型
( Q# l3 s+ }( M% e/ k
/ |6 h# H. d) x3 d9 显示文本 - \* O' W8 ]  q- b
8 N. W2 |$ k$ T4 g# n% m
10 Direct3D中的2D
2 n( t/ U: _7 G) f" q. S  w0 K* `) O: `, U( G
11 Direct3D的程序结构 7 `0 \2 N6 Q; U( S) l
+ Q! L5 o1 E0 E, D, c
5 w4 |9 G) c6 N1 Q' t7 o
请注意:
. m& H; m8 K# _% W' G
9 A+ g) E- S4 {! f# n因为原文章使用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发表的  :
/ Q; n/ Z+ `- I  k5 |7 }( L[s:23] 支持下,我们学的是opengl
; ^; _" f9 d: ?
你能找点opengl的游戏文字显示的资料放在这里吗?
) {- @$ v9 \  {也许对汉化有用。
回复 支持 反对

使用道具 举报

地板
发表于 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初级教程 :
: p% ?  m& M! c! N+ A前言: 1 u# @+ n! X& p' B
) q1 k% s2 o3 z2 g0 [" Q8 h# F
这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。 # a  B. X* T- Y0 v& b
% I+ }0 c! D. z9 A/ q( n+ V4 L
3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。
( w, L6 v; I# O8 ]7 H; n* g) ^2 T.......

$ E/ q! T8 k  l5 P  K) S0 P9 J' \9 W0 Y' c3 A. x0 O
学习学习,最后问一个菜鸟级问题,我是不是要装visual basic?怎么装?
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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