欢迎来到天天文库
浏览记录
ID:11254857
大小:1.37 MB
页数:48页
时间:2018-07-11
《计算机图形学(徐长青、许志闻)directd_初级教程_最终稿》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、EquationChapter1Section1Direct3D程序设计基础本章将介绍使用Direct3D进行游戏动画绘制的基础知识,只要会简单的VC++编程以及一点立体几何的基础知识即可完成本章给出的实例。通过它,可以了解到Direct3D的基本概念,学会绘制简单的几何图形,并掌握光源、材质和纹理的基本用法。3D绘图的实质就是在二维计算机屏幕上绘制三维形体,为此要用到一些数学变换来建模和处理几何图形。第一节DirectX与Direct3D简介1.1开发环境DirectX是Microsoft公司开发的运行于计算机平台的多媒体控制处理引擎。对于通常所说的Dir
2、ectX实际上有两种不同的含义:一是指DirectXSDK(即DirectX开发工具包)或称为DirectXAPI(应用程序编程接口),它是Microsoft公司提供的一套用于开发高性能多媒体程序的应用程序接口;二是指DirectXRuntime,它是一组动态链接库,是运行利用DirectXSDK开发的程序所必需的动态库。在安装游戏时,经常会询问用户是否安装新版本的DirectX,这时所提到的DirectX就是指DirectXRuntime。对于程序员来说,DirectX主要是指DirectXSDK,本章中提到的DirectX如无特殊说明也是指DirectX
3、SDK。基于DirectXAPI设计开发的多媒体软件运行于硬件抽象层(HardwareAbstractionLayer,HAL)上,即充分利用了系统硬件的加速功能,又隐藏了硬件相关的设备特性,通过编写与设备无关的高效代码,DirectX程序总能以最佳方式运行,因此具有效率高,并且易于开发的优点,一推出就深受多媒体开发人员的喜爱。除支持效率极高的硬件抽象层外DirectX还支持软件运行于软件参考层(ReferenceLayer,REF)上,软件参考层能使不支持某些硬件加速功能的设备使用软件模拟相应的功能特性,在对运行速度要求不高的系统中使用高级的DirectX
4、功能。DirectX在计算机游戏设计中应用最为广泛,当前流行的绝大多数游戏都支持DirectX,并拥有出色的性能。最新推出的DirectX9.0,对早期的DirectX的功能进行了完善和补充,新增了更多最新的多媒体特性,能够充分发挥计算机硬件的性能,可以说是三维软件特别是游戏软件开发的有效工具。本章采用DirectXSDK9.0版。为了创建Direct3D程序,首先需要从微软网站下载安装DirectXSDK。由于微软已经在SDK中包含了DirectX9的安装文件,因此安装完SDK后,就搭建好了开发环境和编译环境。DirectX由几部分组成,每部分负责特定的功
5、能。其中Direct3D是负责三维图形的组件,也是DirectX最重要、最复杂的组成部分。本章将介绍使用Direct3D开发三维图形程序的相关内容。本章将以MFC基于对话框的应用程序为框架,在其上添加Direct3D绘图功能。1.2COM对象DirectX的功能都是以COM对象的形式提供的。COM是组件对象模型(ComponentObjectModel)的简写,它是对一组特定功能的抽象集合,应用程序不能直接访问COM对象,而是必须通过对COM对象的接口(Interface)的指针执行COM对象的功能(COM对象接口指针在使用上类似于C++类的指针)。所谓接口
6、,其实就是一组特殊的C++对象,应用程序通过调用这些对象的成员函数,来访问COM对象,实现组件的功能。因此,COM对象可看作一种协议,用来实现软件模块间的二进制连接。当这种连接建立后,两个模块之间就可以通过接口的机制来通信。目前常用的ActiveX控件就是一种COM对象。COM的实现细节相当复杂,不过微软已经最大限度地简化了COM的使用。作为Direct3D开发人员,只要了解接口及其用法就行了。COM对象在被应用程序调用时,通常像个黑匣子,作为一个DLL动态库被调用。同普通的DLL动态库一样,COM对象接口定义了一组函数,供应用程序调用并完成所有它所支持的任
7、务。在COM术语中,这些成员函数被称作方法(Method)。虽然称呼变了,但应用程序和COM对象相互作用的方法与它和普通的C++对象之间的调用语法相类似。接口的特殊性在于它的生成和销毁都由系统完成,无须用户干预。COM对象进行了更为严格的封装。不仅能创建它并能调用所有的公有方法。一个COM对象的公有方法被集成到一个或多个接口。为了使用某个方法,必须创建这个对象并从它这里得到恰当的接口。一个接口一般包括一组相关的方法,由它们提供对该对象特定属性的访问。任何非接口提供的方法都不能使用。COM对象具有如下特点:(1)COM对象的创建方法与C++对象不同。有几种不同
8、的方法可以创建COM对象,但它们都包括具体的COM技
此文档下载收益归作者所有