Direct3D9初级教程

原创 2003年07月18日 06:56:00

前言:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

       这篇教程是为初学者准备的,只要会简单的VC++编程以及一点立体几何的基础知识即可。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。

       3D绘图的实质就是在二维计算机屏幕上创建三维幻觉,为此要用到一些数学变换来建模和处理几何图形。我将尽可能用通俗易懂的语言来解释这些变换及其用法,避免涉及复杂的数学知识。

1 开发环境

       本文选用VC++ 6.0做语言环境,建议安装Service Pack5补丁包。为了创建Direct3D程序,需要从微软网站下载安装DirectX SDK,我用的是最新的9.0版,大概200多兆,网址 http://www.microsoft.com/downloads/ 。安装完SDK后,开发环境就搭建好了。当然,要运行编译好的程序,DirectX9是必不可少的(微软已经在SDK中包含了DirectX9的安装文件)。

       DirectX9 SDKVC用户提供了一个程序向导,可以很方便地生成“空”的Direct3D程序。不过为了便于读者掌握Direct3D编程的基础知识,本文将以MFC单文档程序(SDI)为框架,在其上添加Direct3D绘图功能。

2 使用COM组件

       DirectX的功能都是以COM组件的形式提供的。COM是组件对象模型(Component Object Model)的简写,它是一种协议,用来实现软件模块间的二进制连接。当这种连接建立后,两个模块之间就可以通过称为“接口(Interface)”的机制来通信。我们常用的ActiveX控件就是一种COM组件。

       COM的实现细节相当复杂,完全可以写一本厚厚的专著。不过别担心,微软已经为我们最大限度地简化了COM的使用,即便你对COM一窍不通也没关系。作为Direct3D开发人员,只要了解接口及其用法就行了:所谓接口,其实就是一组特殊的C++对象,应用程序通过调用这些对象的成员函数,来访问COM组件,实现组件的功能。在COM术语中,这些成员函数被称作方法(Method)。虽然称呼变了,但其调用语法与普通的C++对象相比,并无二致。接口的特殊性在于它的生成和销毁都由系统完成,无须用户干预。

       Direct3D编程中,我们要做的工作基本上可以归纳为:

         调用适当的函数获取接口指针;

         调用接口的方法(成员函数)来完成所需功能;

         用完接口后,调用Release方法进行“释放”,注意释放顺序应该和获取它们的顺序相反。

3 第一个程序-初始化Direct3D

       3.1 创建程序框架

       3.2 初始化Direct3D

       3.3 渲染

       3.4 释放接口

4 画一个三角形

       4.1 一些数学概念

       4.2 画一个三角形

5 画一个三棱锥-索引缓存和Z缓存

      5.1 什么是索引缓存

      5.2 创建索引缓存

      5.3 渲染索引缓存

      5.4 打开Z缓存

6 画一个圆锥-灯光和材质

      6.1基本概念

      6.2 灯光

      6.3 材质

      6.4 画一个圆锥

     6.5高洛德着色和平面着色

7 为圆锥添加纹理

     7.1 基本概念

     7.2 创建纹理

     7.3 用纹理渲染

8 Mesh模型

     8.1 什么是Mesh模型

     8.2 绘制Mesh模型

9 显示文本

10 Direct3D中的2D

11 Direct3D的程序结构

 

请注意:

因为原文章使用PDF格式编写,

且文章比较长,插图多,

不太容易转贴,

感兴趣的同志请从下列地址下载全文

http://oldsong.nease.net/d3d9-pdfbook.zip

 

Direct3D10 和 Direct3D9 的版本

  北京高档礼品大米关键词语:礼品、 高档礼品、 老年礼品、过年礼物、 春节礼物、春节礼品、春节送什么礼物品、特色礼品、 新春礼品、新年礼品、礼品公司、商务礼品、北京礼品、北京礼品公司、礼品蔬菜、礼品...
  • jiazhen
  • jiazhen
  • 2007年07月04日 11:51
  • 3190

dark gdk+visual c++2008在虚拟机中的运行问题

最近在开始学习做游戏,但是自己用的系统是ubuntu,所以就装了一个virtualbox,并且装了一个xp,于是就开始了游戏之路,但是我发现游戏之路是如此的坎坷,很多小问题,不过都能很快的解决,由于我...
  • zhao_zepeng
  • zhao_zepeng
  • 2013年10月10日 17:43
  • 1258

Direct3D9 教程01

准备条件:VS2005、Microsoft DirectX SDK (April 2007)测试环境:Xp SP2、M440、GF7300go、1G DDR2 6671、在VS2005中创建空项目,新...
  • sagakiss
  • sagakiss
  • 2007年07月25日 17:36
  • 5374

Direct3D9教程1—创建设备

D3D9_Tutorial_1:Creating a Device      步骤: 1、创建窗口 (1-1)填充WNDCLASSEX结构 (1-2)注册窗口类 (1-3)创建窗口 (1-4)显示更...
  • lialianliang
  • lialianliang
  • 2017年09月24日 18:35
  • 170

Direct3D9 创建设备

创建设备 先调用Direct3DCreate9创建D3D9对象, 再调用IDirect3D9::CreateDevice创建对象。 选择设备应用程序可以对硬件查询来检测硬件支持的D3D设备类型。本节讲...
  • yulier
  • yulier
  • 2009年07月17日 15:02
  • 275

Direct3D9的学习历程一:熟悉Direct3D9渲染的运行过程

3D objects are defined in local space and are then all brought into one world space system. To facil...
  • weiming28cn
  • weiming28cn
  • 2005年03月29日 09:06
  • 589

COBOL语言初级教程(1)--COBOL简介

1974年对标准进行了修订,8个功能模块扩充至11个:1. Table Handling2. Sequential I/O3. Relative I/O4. Indexed I/O5. Sort-Me...
  • comenglish
  • comenglish
  • 2007年05月26日 19:35
  • 569

Direct3D9 设备

Direct3D 设备Direct3D 设备是Direct3D的渲染部件,它封装并储存渲染状态。此外,Direct3D设备还执行变换和光照(T&L)操作以及把图像光栅化(Rasterize)到表面(S...
  • yulier
  • yulier
  • 2009年07月16日 19:45
  • 903

Direct3D9基本框架

    1 #include   2 #include ...
  • lapcca
  • lapcca
  • 2010年01月25日 16:36
  • 419

DirectX9函数:Direct3DCreate9

创建一个IDirect3D9 对象实例. IDirect3D9 *Direct3DCreate9(          UINT SDKVersion); 参数: SDKVersion    此参数的值...
  • prsniper
  • prsniper
  • 2010年09月19日 22:12
  • 2249
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Direct3D9初级教程
举报原因:
原因补充:

(最多只允许输入30个字)