读书人

3D绘图程序设计:使用Direct3D IO/9和O

发布时间: 2010-02-08 11:09:13 作者:

 3D绘图程序设计:使用Direct3D IO/9和OpenGL2.0(含光盘)


基本信息出版社:北京科海电子出版社,科学出版社
页码:718 页
出版日期:2009年05月
ISBN:7030242912/9787030242914
条形码:9787030242914
版本:第1版
装帧:平装
开本:16
正文语种:中文
图书品牌:科海培中

内容简介 《3D绘图程序设计:使用Direct3D IO/9和OpenGL2.0(含1CD)》系统、全面地介绍了Direct3D 9、Direct3D 10以及OpenGL 2.0三维图形程序设计方法。全书内容分成3大部分,第1~10章介绍传统的固定绘图流程和基本3D绘图概念,包括坐标转换、动画与交互、打光、贴图、混合与纹理、动态贴图、Stencil Buffer和特效处理等内容。第11~1 8章为比较高级的Shader程序编写,包括HLsL和GLSL的使用、Shader特效和调试Debug等内容。第19~20章是补充教学,介绍绘图引擎、Xbox360、PS3、GPGPIJ和线性代数等基础知识,对刚入门或已经具有3D程序设计经验的读者都会有所帮助。配套光盘提供了书中所有示例程序的可执行文件、工程文件和完整的源代码,以方便读者编译、调试示例程序。
《3D绘图程序设计:使用Direct3D IO/9和OpenGL2.0(含1CD)》主要面向对3D图形程序设计感兴趣的编程人员、游戏开发人员,以及可视化仿真工程技术人员,也可作为高等院校相关专业和培训机构的3D程序设计用书。
编辑推荐 对于立志于从事游戏行业的初学者《3D绘图程序设计:使用Direct3D IO/9和OpenGL2.0(含1CD)》由浅入深地介绍该行业的一系列知识,包括3D坐标转换、基本几何图形、打光、载八模型、2D/3D/Cubemap贴图、材质与混色、动态贴图、Stencil Buffer、影子/镜像/投影效果、粒子系统Particle等。只要您拥有C++语言基础和对游戏编程的热情,按部就班地进行学习,就能掌握业界领先的绘图技术,让自己的游戏开发生涯有一个高的起点。
对于已经掌握了Fixed Function Pipeline绘图的从业人员作者以全球领先的游戏公司的工作经验来讲解最新的Shader绘图技术,包括Normalmap、Parallax/Relief map、影像处理、景深效果、光晕、阴影、折射、水波、Deferred Lighting、HDR高动态范围、Xbox、PS3和GPGPU应用等,让您了解最前沿的3D图形技术.做出绚丽的游戏特效,使您和游戏产业的技术发展保持同步。
目录
第1章 计算机绘图简介
1.1 图像的数字化
1.2 3D画面的产生
1.3 动画
1.4 绘图芯片GPU简介

第2章 坐标转换
2.1 准备工作
2.2 屏幕坐标
2.3 正交视图投影Oft}logonaI View
2.4 透视图投影.PerspectiVe View
2.5 自动坐标转换
2.6 Shader
2 7 Direct3D10

第3章 动画和交互
3.1 移动3D对象
3.2 对象旋转
3.3 物体变形
3.4 着色
3.5 交互
3.6 移动镜头
3.7 拖行、附着Attach
3.8 Shader
3.9 典型的OpenGL风格
3.10 显示内存

第4章 光照
4.1 软件仿真
4.2 Direct3D和OpenGL的光照
4.3 Specular反射
4.4 光源的管理
4.5 背光
4.6 使用模型
4.7 使用Shader

第5章 贴图
5.1 载入贴图
5.2 贴图坐标
5.3 Mipmap
5.4 多重纹理Multi-texture
5.5 Alpha
5.6 贴图坐标矩阵
5.7 自动生成贴图坐标
5.8 环境贴图Environment map
5.9 贴图压缩DDS
5.10 3D贴图

第6章 混合与纹理
6.1 混合Blend
6.2 Material纹理
6.3 Multi-pass
6.4 投影机效果
6.5 贴图设置补充说明

第7章 动态贴图
7.1 准备工作
7.2 镜射
7.3 动态环境贴图
7.4 阴影
7.5 模糊化一
7.6 柔化的阴影Soft-shadow

第8章 Stencil Buffer
8.1 StencilBuffer的概念
8.2 镜面反射
8.3 Stencil Buffer的操作
8.4 Shadow Volume阴影效果

第9章 其他功能补充
9.1 雾Fog
9.2 反锯齿Anti-aliasing
9.3 Scissor Test
9.4 调整画布大小Viewport
9.5 Occlusion Query
9.6 OpenGL特有功能
9.6.1 Display List
9.6.2 Selection BUffer
9.6.3 OpenGL扩展函数

第10章 基本应用
10.1 显示ASCII
10.2 显示UNICODE
10.3 粒子系统Particle System
10.4 Heightmap地形显示
10.5 全屏模式与MFC窗口程序

第11章 Shader的概念
11.1 CPU与GPU的差别
11.2 GPU的并行计算
11.3 GPU的向量计算SIMD
11.4 CPU与GPU的同步
11.5 Shader的版本与历史
11.6 Shader的使用

第12章 HLSL的使用
12.1 FX Composer和RenderMonkey的使用
12.2 HLSL数据类型
12.3 HLSL Shader的输入和输出
12.4 简单的HLSL光照应用
12.5 HLSL中使用贴图
12.6 HLSL的流程控制及自定义函数
12.7 HLSL的内部函数
12.8 Direct3D Shader汇编语言
12.9 HLSL的管理

第13章 GLSL的使用
13.1 GLSL数据类型
13.2 GLSL的输入及输出
13.3 简单的GLSL光照应用
13.4 GLSL中使用贴图
13.5 GLSL的内部函数
13.6 GLSL的管理

第14章 Shader初级
14.1 Normalmap
14.2 顶点数据压缩
14.3 阴影Shadow
……

第15章 Shader中级
第16章 Shader高级
第17章 Direct3D10及Shader Model4.0
第18章 调试Debug
第19章 补充教材
第20章 线性代数
……
序言 读者只要具有基本的C++程序设计能力.就可以理解本书内容。编译范例程序需要使用VistJal C++和DirectX SDK,读者可以自行上网下载VisLJaI C++Express与DlrectX SDK。3D绘图难免要用到一些数学知识.第20章把书中所使用的线性代数知识进行了详细整理。本书所使用的英文名词都是根据它们在3D绘图中的功能来翻译的,而不是按照字面来翻译。书中偶尔会提到3ds Max,但它并不是必备工具。
计划学习Shader的读者,建议配置支持DIrect3D9 Shader Model 2.O以上的显示芯片.例如NVlDlA 5200和ATl 9500以上的芯片,这样就可以执行本书80%以上的范例程序。如果打算运行所有范例程序的话,则需要支持DI rect3D10 Shader Model 4.O的显示芯片,例如NVIDIA 8x00和ATI HD2xOO以上的芯片.并安装Windows Vista操作系统。不打算学习Shader的读者,使用普通配置的计算机应该就足够了。NVIDIA和ATI都提供了Shader开发工具,有兴趣的读者可以自行安装。
本书分成3部分,第1~10章介绍了传统的固定流程绘图和基本3D绘图概念;第11~18章是比较高级的Shader程序编写,想要深入研究的读者才需要了解这部分内容;第19~20章是补充内容,该部分无论对刚入门的读者.还是已经具有3D程序设计经验的读者.或多或少都有帮助。
并不是每一位读者学习3D绘图都是为了做出炫丽的游戏画面,很多读者学习3D绘图只是为了把数据进行图形化显示。每章的开始都会指出哪些部分是应该要了解,不该跳过的i哪些部分属于高级,可以有选择性地阅读。
本书通过范例程序来说明Direct3D和OpenGL指令的使用方法.并不会在正文中详细说明每个指令及它们所使用的参数。DirectX SDK说明文件中可以找到Direct3D所有指令列表及说明,网络上也有在线的所有OpenGL指令说明。虽然大部分指令通过范例就可以了解,但还是建议读者随时参考这些说明文件。
本书所附的光盘中有全部的范例程序源代码以及它们所使用的模型和贴图。有些范例程序在运行时要按照正确的相对路径,才能加载Shader和模型数据。读者在复制或者解压范例程序时,要保留相同的目录结构。
文摘 插图:


现实世界中,光线会在不同的物体表面间反射,这种通过反射得到的光源,很难把它们归类到前三种光源中的任何一种。但是这一类光源通常无法忽略,如果直接忽略的话,光照结果会太暗。想象一下在白天时,即使太阳光没有直射房间,只要打开一扇窗户,整个房间仍然会很亮,这就是一个最简单的例子。再举一个例子,想象在晚上的时候,在房间里把台灯打开,理论上台灯可以算是聚光灯,落在光柱外的物体不会被照射到,但事实上整个房间多多少少都会因为台灯而变亮,因为被台灯直接照射的物体会反射光线,这些反射的光线会再去照亮其他物体。
在Fixed Function Pipeline中,处理这一类因为反射而得到的光源的最简单的方法就是再加入一个环境光Ambient Light。环境光没有位置,也没有方向,仅仅提供了一个基本的光源强度。让物体在没有直接被三种光源的任何一种光照射到时,还能得到一个最基本的亮度。环境光是用来模拟通过反射所得到的间接光源,否则有些物体可能会因为太暗而看不到。
读书人网 >程序设计

热点推荐