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

【教程】Direct3D9初级教程

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

【教程】Direct3D9初级教程

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

【教程】Direct3D9初级教程

前言:
4 J( [" ?1 ]+ v
/ i+ H$ ~8 g, Y, S8 a这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。
% l* Y# w; L: Q
! s$ I! u  A9 a& V. j: L% G3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。
6 X" U, R% d6 M
1 k. s6 P) A: e, l+ y1 开发环境 4 u% Q2 q# S7 t) x& a" c1 v
! V. @4 F: p/ _" o
本文选用VC++ 6.0做语言环境,建议安装Service Pack5补丁包。为了创建Direct3D程序,需要从微软网站下载安装DirectX SDK,我用的是最新的9.0版,大概200多兆,网址 http://www.microsoft.com/downloads/ 。安装完SDK后,开发环境就搭建好了。当然,要运行编译好的程序,DirectX9是必不可少的(微软已经在SDK中包含了DirectX9的安装文件)。 / @! n& W! F9 K, N/ Q

8 J; b" Z; w4 |/ W+ CDirectX9 SDK为VC用户提供了一个程序向导,可以很方便地生成“空”的Direct3D程序。不过为了便于读者掌握Direct3D编程的基础知识,本文将以MFC单文档程序(SDI)为框架,在其上添加Direct3D绘图功能。
' ^% }  x) d6 x
- t% d0 G! ]/ @% W* D( C2 使用COM组件 " C% t! A  {  \
- T: Z) I$ ]2 ~5 t5 X( h
DirectX的功能都是以COM组件的形式提供的。COM是组件对象模型(Component Object Model)的简写,它是一种协议,用来实现软件模块间的二进制连接。当这种连接建立后,两个模块之间就可以通过称为“接口(Interface)”的机制来通信。我们常用的ActiveX控件就是一种COM组件。 $ W2 Q3 [! z1 |
! C& z% R: K$ s/ ?/ a. L
COM的实现细节相当复杂,完全可以写一本厚厚的专著。不过别担心,微软已经为我们最大限度地简化了COM的使用,即便你对COM一窍不通也没关系。作为Direct3D开发人员,只要了解接口及其用法就行了:所谓接口,其实就是一组特殊的C++对象,应用程序通过调用这些对象的成员函数,来访问COM组件,实现组件的功能。在COM术语中,这些成员函数被称作方法(Method)。虽然称呼变了,但其调用语法与普通的C++对象相比,并无二致。接口的特殊性在于它的生成和销毁都由系统完成,无须用户干预。 - u1 R, ]/ U) s7 [6 z+ Q

8 Z* x9 E+ m6 `' V  u2 ~9 n在Direct3D编程中,我们要做的工作基本上可以归纳为:
0 N4 [2 `! M& a* L4 M
" @& J/ t$ u. `1 [1 w% }/ e调用适当的函数获取接口指针;
! X/ @8 V) [" n3 M; M5 @! g  ^
8 H. A4 G* F2 U, ]2 o* Z调用接口的方法(成员函数)来完成所需功能;
- \$ N) ^8 I& M4 u7 M/ f, P% g* o& v% [. Q
用完接口后,调用Release方法进行“释放”,注意释放顺序应该和获取它们的顺序相反。 2 P3 Y( H3 A  ]" k8 o

; R2 u0 V4 M. @# N+ Z
5 X* z" }% l- j3 第一个程序-初始化Direct3D
8 P* M% T8 H  l# p1 o% k5 A, E* ]
, j: X3 U1 d/ E- P3.1 创建程序框架
  d2 J' I$ t  [* r8 F/ @5 T4 Z1 G( i7 D. u* M
3.2 初始化Direct3D
5 ]/ m4 |; d: \6 ^, g8 m4 j0 ], g0 z3 e' L& k
3.3 渲染
9 a5 n4 j" J% p- j1 ?
) ?4 p) B" ]) D$ e: e9 X& D8 k3.4 释放接口 2 X" P) f' D1 \: I$ B
3 t3 M  y& ~) [7 G9 n! o# J
4 画一个三角形 0 n" Q4 k; a; L* B! t; |9 O# s$ w

8 c" I0 k; ?* h4.1 一些数学概念 . T. o! B6 X6 h7 |. N
1 C3 V  [. g/ K& E
4.2 画一个三角形
  V: g* h& W* q, Y. i! m" R1 t& W
5 画一个三棱锥-索引缓存和Z缓存
1 c! ~, B( k* g' V
' W+ e' @- K4 r/ U& u+ x5 B5.1 什么是索引缓存 - ]( W5 h& [5 |; y

6 H- g3 G3 h1 V4 p4 k' E4 X% V5.2 创建索引缓存 + X7 p4 ]3 N& k1 U$ a  o& S% M
8 w2 J% W3 |. ]5 L1 ^: ^$ J+ ?  k2 p, W' P
5.3 渲染索引缓存 & j" ~: _2 g! |3 h

# `2 X* L# ^1 z1 ]: Z7 O5.4 打开Z缓存
+ p7 t5 L. }3 J, L6 t; N+ _
% Y$ U% ]& a$ v$ a& r6 画一个圆锥-灯光和材质
& H$ ?) E8 K3 \& r! o9 l4 q
& s% `* ]: R2 n* B( y+ {" A6.1基本概念
! L- j# @) Z  J8 `5 i6 U
" }# _6 s- R, }! z% P1 T6.2 灯光
$ f" w$ {  n5 H( N( {! v5 m1 A: o0 ]  g! I/ r
6.3 材质 + u+ g0 H4 b, m" Y
  t$ z" O3 `  T7 F) y* m+ i0 x# ?
6.4 画一个圆锥
2 A" J8 i' Z# [7 b( w/ J- P
2 p% x; r$ H) m4 H6 z' U: {/ G6.5高洛德着色和平面着色
" U; |8 B* H6 t+ b4 Z# u2 W
7 b& Q  H8 f; }+ n7 L# R9 Q7 为圆锥添加纹理
2 z7 K- t% r* l* [7 G! d% N: T* K3 M8 G
7.1 基本概念 3 |) w7 E7 O& y: Y1 F' R
! u/ p8 J, k0 g. G
7.2 创建纹理 + g1 [" S1 X# n# w

, x9 T  h3 x# b" k7 i# ^( |7.3 用纹理渲染 * O/ V7 a( M% H  W9 p! l
* A1 i& w6 S, B0 Y/ j0 |% w
8 Mesh模型
0 q% d+ [0 q! |" w) u5 O
) z2 j+ e7 z* [" q8.1 什么是Mesh模型
* J  \7 t# s/ K8 w, y& }: T- R% y
/ V/ W  f8 s1 e, ^8.2 绘制Mesh模型 7 B0 y' A1 V) |# E5 h$ f
( f6 I" J+ S% \- ]% L
9 显示文本 ' b, d5 Q5 F" [# H' e
5 a4 o, }7 p  z& Z
10 Direct3D中的2D
$ c9 L, c, o+ U, Q
& O1 d/ b$ W7 O+ f, H11 Direct3D的程序结构 # o" [  c2 p" W6 ^# d/ ^* W
+ H- d2 O- ^! r! h! ]
- h* ]; L4 _- W9 F
请注意: ) e" {7 a; ^6 E
$ d1 n. X1 x' Y  b9 `% 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发表的  :& W( }& [. x* P2 B4 f3 N7 ?4 w
[s:23] 支持下,我们学的是opengl
2 v9 i2 U/ Q, v& u0 X7 \0 |
你能找点opengl的游戏文字显示的资料放在这里吗?+ {# T" f  ]* p  q
也许对汉化有用。
回复 支持 反对

使用道具 举报

地板
发表于 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初级教程 :
0 R9 V9 {* b- b: ?前言:
. s* c  C9 j; N7 z# `' |  Y
# l  [9 l& y4 f$ g3 {: s$ a6 L这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。 5 D3 `( v# B% I: a

$ J5 W1 F; g6 p5 d& m- ?: e3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。 5 L* R8 Z" t# l% g: K
.......

6 B( c  Q) \' `% y# y* \  _; |/ k+ B+ W, a+ K) Z" @
学习学习,最后问一个菜鸟级问题,我是不是要装visual basic?怎么装?
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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