3D游戲編程大師技巧(上下冊(cè))

出版時(shí)間:2012-7  出版社:人民郵電出版社  作者:拉莫斯  頁(yè)數(shù):1086  
Tag標(biāo)簽:無(wú)  

前言

游戲編程原理和實(shí)踐很久以前,我編寫了一本有關(guān)游戲編程的圖書(shū)《Windows游戲編程大師技巧》,終于實(shí)現(xiàn)了夙愿——為讀者編寫一本介紹如何制作游戲的圖書(shū)。多年后,我在游戲編程方面的經(jīng)驗(yàn)更加豐富,思想也更睿智,同時(shí)學(xué)會(huì)了更多游戲編程的技巧。讀者即使沒(méi)有閱讀過(guò)《Windows游戲編程大師技巧》,也能讀懂本書(shū);但需要提醒您的是,本書(shū)的內(nèi)容更深,重點(diǎn)為3D游戲編程,要求讀者具備眾多的背景知識(shí)。本書(shū)將續(xù)寫和彌補(bǔ)《Windows游戲編程大師技巧》沒(méi)有涉及的內(nèi)容,進(jìn)一步探討3D游戲編程的概念,在時(shí)間和篇幅允許的情況下,盡可能地涵蓋3D游戲編程的每個(gè)重要主題。當(dāng)然,我不會(huì)假設(shè)讀者是位大師級(jí)程序員且已經(jīng)知道如何制作游戲。本書(shū)是為游戲編程新手編寫的,針對(duì)的讀者群是中高級(jí)程序員。如果讀者不熟悉C/C++編程,勢(shì)必會(huì)在閱讀本書(shū)的過(guò)程中深感迷惘。市面上有很多優(yōu)秀的C/C++圖書(shū),建議讀者參考Stephen Prata或Robert Lafore的著作。在筆者看來(lái),他們是世界上最棒的C/C++圖書(shū)作者。當(dāng)前是有史以來(lái)游戲行業(yè)最美好的時(shí)代?,F(xiàn)在的技術(shù)足以讓您創(chuàng)建出栩栩如生的游戲!想象一下即將出現(xiàn)的技術(shù),PlayStation 2、Xbox和GameCube都很酷。然而,這些技術(shù)掌握起來(lái)并不容易,您必須付出艱苦的努力。當(dāng)前,游戲編程的難度更高了,為制作游戲必須掌握更多的技能。然而,如果您正閱讀這段文字,表明您樂(lè)于迎接挑戰(zhàn)。算您找對(duì)了地方,閱讀本書(shū)后,您將能夠使用自己編寫的軟件光柵化模塊,制作出支持紋理映射和光照效果的3D PC視頻游戲。另外,您還將理解3D圖形學(xué)的基本原理,更深入地認(rèn)識(shí)與運(yùn)用當(dāng)前和未來(lái)的3D硬件。內(nèi)容簡(jiǎn)介本書(shū)的內(nèi)容極其豐富,涵蓋了創(chuàng)建基于Windows 9x/2000的PC游戲所需的全部知識(shí),其中包括以下主題:《Windows游戲編程大師技巧》中開(kāi)發(fā)的引擎;Win32編程和DirectX基礎(chǔ)知識(shí);包括四元數(shù)在內(nèi)的高等數(shù)學(xué)知識(shí);2D/3D圖形學(xué)和算法;3D投影和相機(jī)操控;線框和實(shí)心模式渲染;光照和紋理映射;高級(jí)可見(jiàn)性算法;3D動(dòng)畫(huà)技術(shù)。讀者可能會(huì)問(wèn),本書(shū)介紹如何使用3D硬件還是使用代碼實(shí)現(xiàn)3D軟件光柵化模塊?答案是后者。只有懦弱的人才依賴于3D硬件,真正的游戲程序員能夠從頭開(kāi)始編寫3D引擎,對(duì)這樣的工作充滿激情,同時(shí)知道如何使用3D硬件。本書(shū)將介紹真正的3D游戲編程,具備這些知識(shí)后,讀者將能夠在兩三周內(nèi)學(xué)會(huì)使用任何3D API。在作者看來(lái),如果您知道如何編寫紋理映射函數(shù)和觀察系統(tǒng),使用硬件時(shí)將更為得心應(yīng)手。另外,您不能假設(shè)每臺(tái)計(jì)算機(jī)都配置了優(yōu)秀的3D硬件,這樣的時(shí)代還沒(méi)有到來(lái);只因?yàn)橛?jì)算機(jī)沒(méi)有3D硬件就將其排除在目標(biāo)市場(chǎng)之外是非常糟糕的,尤其是在您沒(méi)有數(shù)百萬(wàn)的資金,又想進(jìn)入游戲市場(chǎng)時(shí)。在這種情況下,您將從非3D加速的軟件市場(chǎng)著手。最后,讀者肯定對(duì)“Windows-DirectX”有些擔(dān)心。只要方法得當(dāng),Windows編程實(shí)際上非常簡(jiǎn)單、有趣,DOS32編程中的很多問(wèn)題都不再會(huì)出現(xiàn)。不要將Windows編程視為障礙——它讓我們能夠?qū)⒏嗟臅r(shí)間花在游戲代碼而不是諸如GUI、I/O和圖形驅(qū)動(dòng)程序等細(xì)節(jié)上。如果想為市面上所有的2D/3D加速硬件編寫圖形驅(qū)動(dòng)器,就是日夜不停地干也干不完,況且還有聲卡、游戲桿等硬件呢。讀者必須具備的知識(shí)本書(shū)假定讀者有很強(qiáng)的編程技能。如果您不懂如何編寫C語(yǔ)言代碼,不知道怎樣使用編譯器,將會(huì)在閱讀本書(shū)時(shí)感到相當(dāng)迷惘。本書(shū)還使用了一些C++代碼,這可能會(huì)讓C語(yǔ)言程序員感到有些擔(dān)心。不過(guò)也不用怕,我在做任何怪異的事情前將提醒讀者。如果您需要C++程序設(shè)計(jì)的速成課程,可參閱附錄D。基本上,本書(shū)只有有關(guān)DirectX的范例偶爾使用了C++。然而,我還是決定在本書(shū)中稍微多用些C++,因?yàn)樵谟螒蚓幊讨?,很多東西都是面向?qū)ο蟮?,如果將它們?cè)O(shè)計(jì)成C語(yǔ)言風(fēng)格的結(jié)構(gòu),簡(jiǎn)直是悖理逆天??傊?,如果您能夠使用C語(yǔ)言進(jìn)行編程,那很好;如果能夠使用C/C++進(jìn)行編程,閱讀本書(shū)將完全不成問(wèn)題。眾所周知,計(jì)算機(jī)程序是由邏輯和數(shù)學(xué)計(jì)算組成的。3D視頻游戲的重點(diǎn)在數(shù)學(xué)運(yùn)算,數(shù)學(xué)在3D圖形學(xué)中幾乎無(wú)處不在。幸運(yùn)的是,讀者只需具備一些基本的代數(shù)和幾何學(xué)知識(shí)即可;本書(shū)還將介紹有關(guān)向量和矩陣的知識(shí)。讀者只要知道加、減、乘、除,就可以理解90%以上的內(nèi)容,雖然不能親自推導(dǎo)。畢竟,最終的目的只是要能使用其中的代碼。本書(shū)的組織結(jié)構(gòu)本書(shū)由6部分組成。第一部分——3D游戲編程簡(jiǎn)介。簡(jiǎn)要地介紹游戲、Windows和DirectX編程,將建立一個(gè)虛擬計(jì)算機(jī)接口,用于創(chuàng)建所有的演示程序。第二部分——3D數(shù)學(xué)和變換。介紹各種數(shù)學(xué)概念,創(chuàng)建一個(gè)供本書(shū)使用的完整數(shù)學(xué)庫(kù)。這部分的最后幾章涉及3D圖形學(xué)、數(shù)據(jù)結(jié)構(gòu)、相機(jī)和線框模式渲染等。第三部分——基本3D渲染。討論光照、基本著色、隱藏面消除和3D裁剪。第四部分——高級(jí)3D渲染。討論紋理映射、高級(jí)光照、陰影以及BSP樹(shù)、入口等空間劃分算法等。第五部分——高級(jí)動(dòng)畫(huà)、物理建模和優(yōu)化。介紹動(dòng)畫(huà)、運(yùn)動(dòng)、碰撞檢測(cè)、簡(jiǎn)單物理建模等。另外,還將討論層次型建模、加載大型游戲世界和眾多的優(yōu)化技術(shù)。附帶光盤的內(nèi)容附帶光盤包含本書(shū)全部的源代碼、可執(zhí)行文件、范例程序、素材、軟件程序、音效和技術(shù)文章,其目錄結(jié)構(gòu)如下。Tricks 3D\SOURCE\T3DIICHAP01\T3DIICHAP02\T3DIICHAP16\TOOLS\GAMES\MEDIA\BITMAPS\3DMODELS\SOUND\DIRECTX\ARTICLES\每個(gè)主目錄都包含您所需的特定數(shù)據(jù),具體情況如下。Tricks 3D:包含其他所有目錄的根目錄。請(qǐng)閱讀README.TXT文件以便了解最后的修改。SOURCE:按章節(jié)順序收錄了書(shū)中所有的源代碼。只需將整個(gè)SOURCE\目錄拷貝到硬盤上就可以使用。TOOLS:收錄了各公司慷慨地允許我放入本光盤的演示版程序。MEDLA:可在您的游戲中隨便使用的圖像、聲音和模型。DIRECTX:最新版本的DirectX SDK。GAMES:大量演示了軟件光柵化的共享版2D、3D游戲。ARTICLES:由3D游戲編程領(lǐng)域的許多老手撰寫的啟迪性文章。附帶光盤包含各種程序和數(shù)據(jù),因此沒(méi)有統(tǒng)一的安裝程序,您需要自行安裝不同的程序和數(shù)據(jù)。然而,在大多數(shù)情況下,只需將SOURCE\目錄拷貝到硬盤中就可以了。至于其他程序和數(shù)據(jù),可以在需要時(shí)安裝它們。安裝DirectX附帶光盤中最重要的、必須安裝的部分是DirectX SDK及其運(yùn)行階段文件。安裝程序位于DIRECTX\目錄中,該目錄中還有一個(gè)README.TXT文件,闡明了最后的修改。注意:必須安裝了DirectX 8.1 SDK或更高版本(附帶光盤中提供了DirectX 9.0)才能使用本書(shū)的源代碼。如果不能確定系統(tǒng)中是否已經(jīng)安裝了最新版本的DirectX SDK,請(qǐng)運(yùn)行安裝程序進(jìn)行確認(rèn)。編譯程序本書(shū)的程序是使用Microsoft Visual C++6.0編寫的。然而,多數(shù)情況下,也可以任何與Win32兼容的編譯器進(jìn)行編譯。盡管如此,我還是推薦使用Microsoft VC++或.NET,因?yàn)橛盟鼈冏鲞@類工作最有效率。如果您不熟悉您的編譯器集成開(kāi)發(fā)環(huán)境(IDE),編譯Windows程序時(shí)肯定會(huì)遇到麻煩。因此,編譯程序之前,請(qǐng)務(wù)必花些時(shí)間來(lái)熟悉編譯器,至少達(dá)到知道如何編譯控制臺(tái)(console)程序“Hello World”的程度。要編譯生成Windows Win32.EXE程序,只需將工程的目標(biāo)程序設(shè)置為Win32.EXE,再進(jìn)行編譯。然而,要?jiǎng)?chuàng)建DirectX程序,必須在工程中包含DirectX導(dǎo)入庫(kù)。您可能認(rèn)為只要將DirectX庫(kù)添加到包含路徑(Include path)中即可,但這樣不行。為避免麻煩,最好手工將DirectX.LIB文件包含到工程中,.LIB文件位于DirectX SDK安裝目錄中的LIB\目錄下。這樣將不會(huì)出現(xiàn)鏈接錯(cuò)誤。在大多數(shù)情況下,需要下面這些文件。DDRAW.LIB:DirectDraw導(dǎo)入庫(kù)。DINPUT.LIB:DirectInput導(dǎo)入庫(kù)。DINPUT8.LIB:DirectInput8導(dǎo)入庫(kù)。DSOUND.LIB:DirectSound導(dǎo)入庫(kù)。WINMM.LIB:Windows多媒體擴(kuò)展庫(kù)。具體使用上述文件時(shí),將更詳細(xì)地介紹它們;當(dāng)鏈接器指出“未知符號(hào)(Unresolved Symbol)”錯(cuò)誤時(shí),請(qǐng)檢查是否包含了這些庫(kù)。我不想從新手那里再收到有關(guān)這方面的電子郵件。除DirectX.LIB文件外,還需要將DirectX.H文件放到頭文件搜索路徑中。另外,請(qǐng)務(wù)必將DirectX SDK目錄放在搜索路徑列表的最前面,因?yàn)楹芏郈++編譯器帶有舊版本的DirectX,編譯器可能在其INCLUDE\目錄下找到舊版本的頭文件,而使用這些頭文件是錯(cuò)誤的。正確的位置是DirectX SDK的包含目錄,即DirectX SDK安裝目錄中的INCLUDE\目錄。最后,如果讀者使用的是Borland產(chǎn)品,請(qǐng)務(wù)必使用Borland版本的DirectX.LIB文件,它們位于DirectX SDK安裝目錄中的BORLAND\目錄下。

內(nèi)容概要

  《3D游戲編程大師技巧(上、下冊(cè))》是游戲編程暢銷書(shū)作者André LaMothe的扛鼎之作,從游戲編程和軟件引擎的角度深入探討了3D圖形學(xué)的各個(gè)重要主題。全書(shū)共分5部分,包括16章的內(nèi)容。第1~3章簡(jiǎn)要地介紹了Windows和DirectX編程,創(chuàng)建了一個(gè)Windows應(yīng)用程序模板,讓讀者能夠?qū)⒕Ψ旁谟螒蜻壿嫼蛨D形實(shí)現(xiàn)中,而不用考慮Windows和DirectX方面的瑣事;第4~5章簡(jiǎn)要地介紹了一些數(shù)學(xué)知識(shí)并實(shí)現(xiàn)了一個(gè)數(shù)學(xué)庫(kù),供以后編寫演示程序時(shí)使用;第6章概述了3D圖形學(xué),讓讀者對(duì)之后即將介紹的內(nèi)容有大致的了解;第7~11章分別介紹了光照、明暗處理、仿射紋理映射、3D裁剪和深度緩存等內(nèi)容;第12~14章討論了高級(jí)3D渲染技術(shù),包括透視修正紋理映射、Alpha混合、1/z緩存、紋理濾波、空間劃分和可見(jiàn)性算法、陰影、光照映射等;第15~16章討論了動(dòng)畫(huà)、運(yùn)動(dòng)碰撞檢測(cè)和優(yōu)化技術(shù)。
  《3D游戲編程大師技巧(上、下冊(cè))》適合于有一定編程經(jīng)驗(yàn)并想從事游戲編程工作或?qū)?D圖形學(xué)感興趣的人員閱讀。

作者簡(jiǎn)介

本書(shū)作者Andre LaMothe有25年的計(jì)算行業(yè)從業(yè)經(jīng)驗(yàn),擁有數(shù)學(xué)、計(jì)算機(jī)科學(xué)和電子工程等學(xué)位,是20歲時(shí)就在NASA做研究工作的少數(shù)幾人之一。 本書(shū)在china-pub上的評(píng)價(jià)有96條之多,希望該書(shū)再版的呼聲很高。?

書(shū)籍目錄

目 錄(上冊(cè))
第一部分 3D游戲編程簡(jiǎn)介
第1章 3D游戲編程入門 2
1.1 簡(jiǎn)介 2
1.2 2D/3D游戲的元素 3
1.2.1 初始化 4
1.2.2 進(jìn)入游戲循環(huán) 4
1.2.3 讀取玩家輸入 4
1.2.4 執(zhí)行AI和游戲邏輯 4
1.2.5 渲染下一幀 4
1.2.6 同步顯示 5
1.2.7 循環(huán) 5
1.2.8 關(guān)閉 5
1.3 通用游戲編程指南 7
1.4 使用工具 11
1.4.1 3D關(guān)卡編輯器 14
1.4.2 使用編譯器 15
1.5 一個(gè)3D游戲范例:Raiders 3D 17
1.5.1 事件循環(huán) 37
1.5.2 核心3D游戲邏輯 38
1.5.3 3D投影 39
1.5.4 星空 41
1.5.5 激光炮和碰撞檢測(cè) 41
1.5.6 爆炸 41
1.5.7 玩Raiders3D 41
1.6 總結(jié) 41
第2章 Windows和DirectX簡(jiǎn)明教程 43
2.1 Win32編程模型 43
2.2 Windows程序的最小需求 44
2.3 一個(gè)基本的Windows應(yīng)用程序 48
2.3.1 Windows類 49
2.3.2 注冊(cè)Windows類 53
2.3.3 創(chuàng)建窗口 53
2.3.4 事件處理程序 55
2.3.5 主事件循環(huán) 59
2.3.6 構(gòu)建實(shí)時(shí)事件循環(huán) 63
2.4 DirectX和COM簡(jiǎn)明教程 64
2.4.1 HEL和HAL 65
2.4.2 DirectX基本類 66
2.5 COM簡(jiǎn)介 67
2.5.1 什么是COM對(duì)象 68
2.5.2 創(chuàng)建和使用DirectX COM接口 70
2.5.3 查詢接口 70
2.6 總結(jié) 72
第3章 使用虛擬計(jì)算機(jī)進(jìn)行3D游戲編程 73
3.1 虛擬計(jì)算機(jī)接口簡(jiǎn)介 73
3.2 建立虛擬計(jì)算機(jī)接口 75
3.2.1 幀緩存和視頻系統(tǒng) 75
3.2.2 使用顏色 78
3.2.3 緩存交換 80
3.2.4 完整的虛擬圖形系統(tǒng) 82
3.2.5 I/O、聲音和音樂(lè) 82
3.3 T3DLIB游戲控制臺(tái) 83
3.3.1 T3DLIB系統(tǒng)概述 83
3.3.2 基本游戲控制臺(tái) 83
3.4 T3DLIB1庫(kù) 89
3.4.1 DirectX圖形引擎體系結(jié)構(gòu) 89
3.4.2 基本常量 89
3.4.3 工作宏 91
3.4.4 數(shù)據(jù)類型和結(jié)構(gòu) 92
3.4.5 函數(shù)原型 95
3.4.6 全局變量 99
3.4.7 DirectDraw接口 100
3.4.8 2D多邊形函數(shù) 103
3.4.9 數(shù)學(xué)函數(shù)和錯(cuò)誤函數(shù) 110
3.4.10 位圖函數(shù) 111
3.4.11 8位調(diào)色板函數(shù) 115
3.4.12 實(shí)用函數(shù) 118
3.4.13 BOB(Blitter對(duì)象)引擎 119
3.5 T3DLIB2 DirectX輸入系統(tǒng) 126
3.6 T3DLIB3聲音和音樂(lè)庫(kù) 131
3.6.1 頭文件 132
3.6.2 類型 132
3.6.3 全局變量 133
3.6.4 DirectSound API封裝函數(shù) 133
3.6.5 DirectMusic API封裝函數(shù) 138
3.7 建立最終的T3D游戲控制臺(tái) 140
3.7.1 映射真實(shí)圖形到虛擬接口的非真實(shí)圖形 141
3.7.2 最終的T3DLIB游戲控制臺(tái) 143
3.8 范例T3LIB應(yīng)用程序 152
3.8.1 窗口應(yīng)用程序 152
3.8.2 全屏應(yīng)用程序 153
3.8.3 聲音和音樂(lè) 154
3.8.4 處理輸入 154
3.9 總結(jié) 157
第二部分 3D數(shù)學(xué)和變換
第4章 三角學(xué)、向量、矩陣和四元數(shù) 160
4.1 數(shù)學(xué)表示法 160
4.2 2D坐標(biāo)系 161
4.2.1 2D笛卡爾坐標(biāo) 161
4.2.2 2D極坐標(biāo) 163
4.3 3D坐標(biāo)系 165
4.3.1 3D笛卡爾坐標(biāo) 165
4.3.2 3D柱面坐標(biāo) 168
4.3.3 3D球面坐標(biāo) 168
4.4 三角學(xué) 170
4.4.1 直角三角形 171
4.4.2 反三角函數(shù) 172
4.4.3 三角恒等式 173
4.5 向量 173
4.5.1 向量長(zhǎng)度 174
4.5.2 歸一化 174
4.5.3 向量和標(biāo)量的乘法 175
4.5.4 向量加法 176
4.5.5 向量減法 176
4.5.6 點(diǎn)積 177
4.5.7 叉積 179
4.5.8 零向量 180
4.5.9 位置和位移向量 180
4.5.10 用線性組合表示的向量 181
4.6 矩陣和線性代數(shù) 182
4.6.1 單位矩陣 183
4.6.2 矩陣加法 184
4.6.3 矩陣的轉(zhuǎn)置 184
4.6.4 矩陣乘法 184
4.6.5 矩陣運(yùn)算滿足的定律 186
4.7 逆矩陣和方程組求解 186
4.7.1 克來(lái)姆法則 188
4.7.2 使用矩陣進(jìn)行變換 190
4.7.3 齊次坐標(biāo) 191
4.7.4 應(yīng)用矩陣變換 192
4.8 基本幾何實(shí)體 198
4.8.1 點(diǎn) 198
4.8.2 直線 199
4.8.3 平面 202
4.9 使用參數(shù)化方程 206
4.9.1 2D參數(shù)化直線 206
4.9.2 3D參數(shù)化直線 208
4.10 四元數(shù)簡(jiǎn)介 213
4.10.1 復(fù)數(shù)理論 213
4.10.2 超復(fù)數(shù) 218
4.10.3 四元數(shù)的應(yīng)用 223
4.11 總結(jié) 226
第5章 建立數(shù)學(xué)引擎 227
5.1 數(shù)學(xué)引擎概述 227
5.1.1 數(shù)學(xué)引擎的文件結(jié)構(gòu) 228
5.1.2 命名規(guī)則 228
5.1.3 錯(cuò)誤處理 229
5.1.4 關(guān)于C++的最后說(shuō)明 229
5.2 數(shù)據(jù)結(jié)構(gòu)和類型 229
5.2.1 向量和點(diǎn) 230
5.2.2 參數(shù)化直線 231
5.2.3 3D平面 232
5.2.4 矩陣 233
5.2.5 四元數(shù) 236
5.2.6 角坐標(biāo)系支持 237
5.2.7 2D極坐標(biāo) 237
5.2.8 3D柱面坐標(biāo) 238
5.2.9 3D球面坐標(biāo) 239
5.2.10 定點(diǎn)數(shù) 239
5.3 數(shù)學(xué)常量 240
5.4 宏和內(nèi)聯(lián)函數(shù) 242
5.4.1 通用宏 246
5.4.2 點(diǎn)和向量宏 246
5.4.3 矩陣宏 247
5.4.4 四元數(shù) 249
5.4.5 定點(diǎn)數(shù)宏 249
5.5 函數(shù)原型 250
5.6 全局變量 253
5.7 數(shù)學(xué)引擎API清單 253
5.7.1 三角函數(shù) 254
5.7.2 坐標(biāo)系支持函數(shù) 255
5.7.3 向量支持函數(shù) 258
5.7.4 矩陣支持函數(shù) 266
5.7.5 2D和3D參數(shù)化直線支持函數(shù) 277
5.7.6 3D平面支持函數(shù) 281
5.7.7 四元數(shù)支持函數(shù) 285
5.7.8 定點(diǎn)數(shù)支持函數(shù) 293
5.7.9 方程求解支持函數(shù) 298
5.8 浮點(diǎn)單元運(yùn)算初步 300
5.8.1 FPU體系結(jié)構(gòu) 301
5.8.2 FPU堆?!?02
5.8.3 FPU指令集 303
5.8.4 經(jīng)典指令格式 306
5.8.5 內(nèi)存指令格式 306
5.8.6 寄存器指令格式 307
5.8.7 寄存器彈出指令格式 307
5.8.8 FPU范例 307
5.8.9 FLD范例 308
5.8.10 FST范例 308
5.8.11 FADD范例 310
5.8.12 FSUB范例 312
5.8.13 FMUL范例 313
5.8.14 FDIV范例 314
5.9 數(shù)學(xué)引擎使用說(shuō)明 315
   游戲控制臺(tái) 317
5.10 關(guān)于數(shù)學(xué)優(yōu)化的說(shuō)明 317
5.11 總結(jié) 317
第6章 3D圖形學(xué)簡(jiǎn)介 318
6.1 3D引擎原理 318
6.2 3D游戲引擎的結(jié)構(gòu) 319
6.2.1 3D引擎 319
6.2.2 游戲引擎 320
6.2.3 輸入系統(tǒng)和網(wǎng)絡(luò) 320
6.2.4 動(dòng)畫(huà)系統(tǒng) 321
6.2.5 碰撞檢測(cè)和導(dǎo)航系統(tǒng) 324
6.2.6 物理引擎 325
6.2.7 人工智能系統(tǒng) 326
6.2.8 3D模型和圖像數(shù)據(jù)庫(kù) 327
6.3 3D坐標(biāo)系 328
6.3.1 模型(局部)坐標(biāo) 328
6.3.2 世界坐標(biāo) 331
6.3.3 相機(jī)坐標(biāo) 334
6.3.4 有關(guān)相機(jī)坐標(biāo)的說(shuō)明 341
6.3.5 隱藏物體(面)消除和裁剪 342
6.3.6 透視坐標(biāo) 347
6.3.7 流水線終點(diǎn):屏幕坐標(biāo) 356
6.4 基本的3D數(shù)據(jù)結(jié)構(gòu) 363
6.4.1 表示3D多邊形數(shù)據(jù)時(shí)需要考慮的問(wèn)題 363
6.4.2 定義多邊形 365
6.4.3 定義物體 369
6.4.4 表示世界 373
6.5 3D工具 374
   動(dòng)畫(huà)數(shù)據(jù)和運(yùn)動(dòng)數(shù)據(jù) 375
6.6 從外部加載數(shù)據(jù) 375
6.6.1 PLG文件 375
6.6.2 NFF文件 378
6.6.3 3D Studio文件 381
6.6.4 Caligari COB文件 387
6.6.5 Microsoft DirectX .X文件 389
6.6.6 3D文件格式小結(jié) 389
6.7 基本剛性變換和動(dòng)畫(huà) 389
6.7.1 3D平移 389
6.7.2 3D旋轉(zhuǎn) 390
6.7.3 3D變形 392
6.8 再看觀察流水線 393
6.9 3D引擎類型 394
6.9.1 太空引擎 394
6.9.2 地形引擎 395
6.9.3 FPS室內(nèi)引擎 396
6.9.4 光線投射和體素引擎 397
6.9.5 混合引擎 398
6.10 將各種功能集成到引擎中 399
6.11 總結(jié) 399
第7章 渲染3D線框世界 400
7.1 線框引擎的總體體系結(jié)構(gòu) 400
7.1.1 數(shù)據(jù)結(jié)構(gòu)和3D流水線 401
7.1.2 主多邊形列表 403
7.1.3 新的軟件模塊 406
7.2 編寫3D文件加載器 406
7.3 構(gòu)建3D流水線 414
7.3.1 通用變換函數(shù) 414
7.3.2 局部坐標(biāo)到世界坐標(biāo)變換 420
7.3.3 歐拉相機(jī)模型 423
7.3.4 UVN相機(jī)模型 426
7.3.5 世界坐標(biāo)到相機(jī)坐標(biāo)變換 437
7.3.6 物體剔除 440
7.3.7 背面消除 444
7.3.8 相機(jī)坐標(biāo)到透視坐標(biāo)變換 446
7.3.9 透視坐標(biāo)到屏幕(視口)坐標(biāo)變換 451
7.3.10 合并透視變換和屏幕變換 455
7.4 渲染3D世界 457
7.5 3D演示程序 461
7.5.1 單個(gè)3D三角形 461
7.5.2 3D線框立方體 464
7.5.3 消除了背面的3D線框立方體 466
7.5.4 3D坦克演示程序 467
7.5.5 相機(jī)移動(dòng)的3D坦克演示程序 470
7.5.6 戰(zhàn)區(qū)漫步演示程序 472
7.6 總結(jié) 476
目 錄(下冊(cè))
第三部分 基本3D渲染
第8章 基本光照和實(shí)體造型 478
8.1 計(jì)算機(jī)圖形學(xué)的基本光照模型 478
8.1.1 顏色模型和材質(zhì) 480
8.1.2 光源類型 487
8.2 三角形的光照計(jì)算和光柵化 493
8.2.1 為光照做準(zhǔn)備 497
8.2.2 定義材質(zhì) 498
8.2.3 定義光源 502
8.3 真實(shí)世界中的著色 507
8.3.1 16位著色 507
8.3.2 8位著色 507
8.3.3 一個(gè)健壯的用于8位模式的RGB模型 508
8.3.4 一個(gè)簡(jiǎn)化的用于8位模式的強(qiáng)度模型 511
8.3.5 固定著色 515
8.3.6 恒定著色 517
8.3.7 Gouraud著色概述 533
8.3.8 Phong著色概述 535
8.4 深度排序和畫(huà)家算法 535
8.5 使用新的模型格式 540
8.5.1 分析器類 540
8.5.2 輔助函數(shù) 543
8.5.3 3D Studio MAX ASCII格式.ASC 546
8.5.4 TrueSpace ASCII.COB格式 548
8.5.5 Quake II二進(jìn)制.MD2格式概述 557
8.6 3D建模工具簡(jiǎn)介 558
8.7 總結(jié) 561
第9章 插值著色技術(shù)和仿射紋理映射 562
9.1 新T3D引擎的特性 562
9.2 更新T3D數(shù)據(jù)結(jié)構(gòu)和設(shè)計(jì) 563
9.2.1 新的#defines 564
9.2.2 新增的數(shù)學(xué)結(jié)構(gòu) 566
9.2.3 實(shí)用宏 567
9.2.4 添加表示3D網(wǎng)格數(shù)據(jù)的特性 568
9.2.5 更新物體結(jié)構(gòu)和渲染列表結(jié)構(gòu) 574
9.2.6 函數(shù)清單和原型 577
9.3 重新編寫物體加載函數(shù) 583
9.3.1 更新.PLG/PLX加載函數(shù) 584
9.3.2 更新3D Studio .ASC加載函數(shù) 595
9.3.3 更新Caligari .COB加載函數(shù) 596
9.4 回顧多邊形的光柵化 601
9.4.1 三角形的光柵化 601
9.4.2 填充規(guī)則 604
9.4.3 裁剪 606
9.4.4 新的三角形渲染函數(shù) 607
9.4.5 優(yōu)化 612
9.5 實(shí)現(xiàn)Gouraud著色處理 613
9.5.1 沒(méi)有光照時(shí)的Gouraud著色 614
9.5.2 對(duì)使用Gouraud Shader的多邊形執(zhí)行光照計(jì)算 624
9.6 基本采樣理論 632
9.6.1 一維空間中的采樣 632
9.6.2 雙線性插值 634
9.6.3 u和v的插值 635
9.6.4 實(shí)現(xiàn)仿射紋理映射 637
9.7 更新光照/光柵化引擎以支持紋理 640
9.8 對(duì)8位和16位模式下優(yōu)化策略的最后思考 645
9.8.1 查找表 645
9.8.2 網(wǎng)格的頂點(diǎn)結(jié)合性 646
9.8.3 存儲(chǔ)計(jì)算結(jié)果 646
9.8.4 SIMD 647
9.9 最后的演示程序 647
   Raider 3D II 648
9.10 總結(jié) 651
第10章 3D裁剪 652
10.1 裁剪簡(jiǎn)介 652
10.1.1 物體空間裁剪 652
10.1.2 圖像空間裁剪 655
10.2 裁剪算法 656
10.2.1 有關(guān)裁剪的基本知識(shí) 657
10.2.2 Cohen-Sutherland裁剪算法 661
10.2.3 Cyrus-Beck/梁友棟-Barsky裁剪算法 662
10.2.4 Weiler-Atherton裁剪算法 665
10.2.5 深入學(xué)習(xí)裁剪算法 667
10.3 實(shí)現(xiàn)視景體裁剪 667
10.3.1 幾何流水線和數(shù)據(jù)結(jié)構(gòu) 669
10.3.2 在引擎中加入裁剪功能 670
10.4 地形小議 691
10.4.1 地形生成函數(shù) 692
10.4.2 生成地形數(shù)據(jù) 700
10.4.3 沙地汽車演示程序 700
10.5 總結(jié) 704
第11章 深度緩存和可見(jiàn)性 705
11.1 深度緩存和可見(jiàn)性簡(jiǎn)介 705
11.2 z緩存基礎(chǔ) 708
11.2.1 z緩存存在的問(wèn)題 709
11.2.2 z緩存范例 709
11.2.3 平面方程法 711
11.2.4 z坐標(biāo)插值 713
11.2.5 z緩存中的問(wèn)題和1/Z緩存 714
11.2.6 一個(gè)通過(guò)插值計(jì)算z和1/z的例子 715
11.3 創(chuàng)建z緩存系統(tǒng) 718
11.4 可能的z緩存優(yōu)化 734
11.4.1 使用更少的內(nèi)存 734
11.4.2 降低清空z緩存的頻率 734
11.4.3 混合z緩存 736
11.5 z緩存存在的問(wèn)題 736
11.6 軟件和z緩存演示程序 736
11.6.1 演示程序I:z緩存可視化 737
11.6.2 演示程序II:Wave Raider 738
11.7 總結(jié) 743
第四部分 高級(jí)3D渲染
第12章 高級(jí)紋理映射技術(shù) 746
12.1 紋理映射——第二波 746
12.2 新的光柵化函數(shù) 754
12.2.1 最終決定使用定點(diǎn)數(shù) 754
12.2.2 不使用z緩存的新光柵化函數(shù) 755
12.2.3 支持z緩存的新光柵化函數(shù) 758
12.3 使用Gouruad著色的紋理映射 759
12.4 透明度和alpha混合 765
12.4.1 使用查找表來(lái)進(jìn)行alpha混合 766
12.4.2 在物體級(jí)支持alpha混合功能 778
12.4.3 在地形生成函數(shù)中加入alpha支持 784
12.5 透視修正紋理映射和1/z緩存 786
12.5.1 透視紋理映射的數(shù)學(xué)基礎(chǔ) 787
12.5.2 在光柵化函數(shù)中加入1/z緩存功能 793
12.5.3 實(shí)現(xiàn)完美透視修正紋理映射 799
12.5.4 實(shí)現(xiàn)線性分段透視修正紋理映射 803
12.5.5 透視修正紋理映射的二次近似 808
12.5.6 使用混合方法優(yōu)化紋理映射 812
12.6 雙線性紋理濾波 814
12.7 mipmapping和三線性紋理濾波 819
12.7.1 傅立葉分析和走樣簡(jiǎn)介 819
12.7.2 創(chuàng)建mip紋理鏈 822
12.7.3 選擇mip紋理 830
12.7.4 三線性濾波 836
12.8 多次渲染和紋理映射 837
12.9 使用單個(gè)函數(shù)來(lái)完成渲染工作 837
12.9.1 新的渲染場(chǎng)境 838
12.9.2 設(shè)置渲染場(chǎng)境 840
12.9.3 調(diào)用對(duì)渲染場(chǎng)境進(jìn)行渲染的函數(shù) 842
12.10 總結(jié) 851
第13章 空間劃分和可見(jiàn)性算法 852
13.1 新的游戲引擎模塊 852
13.2 空間劃分和可見(jiàn)面判定簡(jiǎn)介 852
13.3 二元空間劃分 856
13.3.1 平行于坐標(biāo)軸的二元空間劃分 857
13.3.2 任意平面空間劃分 858
13.3.3 使用多邊形所在的平面來(lái)劃分空間 858
13.3.4 顯示/訪問(wèn)BSP樹(shù)中的每個(gè)節(jié)點(diǎn) 861
13.3.5 BSP樹(shù)數(shù)據(jù)結(jié)構(gòu)和支持函數(shù) 863
13.3.6 創(chuàng)建BSP樹(shù) 865
13.3.7 分割策略 868
13.3.8 遍歷和顯示BSP樹(shù) 876
13.3.9 將BSP樹(shù)集成到圖形流水線中 886
13.3.10 BSP關(guān)卡編輯器 887
13.3.11 BSP的局限性 897
13.3.12 使用BSP樹(shù)的零重繪策略 897
13.3.13 將BSP樹(shù)用于剔除 899
13.3.14 將BSP樹(shù)用于碰撞檢測(cè) 906
13.3.15 集成BSP樹(shù)和標(biāo)準(zhǔn)渲染 907
13.4 潛在可見(jiàn)集 912
13.4.1 使用潛在可見(jiàn)集 913
13.4.2 潛在可見(jiàn)集的其他編碼方法 914
13.4.3 流行的PVS計(jì)算方法 915
13.5 入口 917
13.6 包圍體層次結(jié)構(gòu)和八叉樹(shù) 919
13.6.1 使用BHV樹(shù) 921
13.6.2 運(yùn)行性能 922
13.6.3 選擇策略 923
13.6.4 實(shí)現(xiàn)BHV 924
13.6.5 八叉樹(shù) 931
13.7 遮掩剔除 932
13.7.1 遮掩體 933
13.7.2 選擇遮掩物 934
13.7.3 混合型遮掩物選擇方法 934
13.8 總結(jié) 934
第14章 陰影和光照映射 935
14.1 新的游戲引擎模塊 935
14.2 概述 935
14.3 簡(jiǎn)化的陰影物理學(xué) 936
14.4 使用透視圖像和廣告牌來(lái)模擬陰影 939
14.4.1 編寫支持透明功能的光柵化函數(shù) 941
14.4.2 新的庫(kù)模塊 944
14.4.3 簡(jiǎn)單陰影 945
14.4.4 縮放陰影 947
14.4.5 跟蹤光源 950
14.4.6 有關(guān)模擬陰影的最后思考 953
14.5 平面網(wǎng)格陰影映射 954
14.5.1 計(jì)算投影變換 954
14.5.2 優(yōu)化平面陰影 957
14.6 光照映射和面緩存技術(shù)簡(jiǎn)介 958
14.6.1 面緩存技術(shù) 960
14.6.2 生成光照?qǐng)D 960
14.6.3 實(shí)現(xiàn)光照映射函數(shù) 961
14.6.4 暗映射(dark mapping) 963
14.6.5 光照?qǐng)D特效 964
14.6.6 優(yōu)化光照映射代碼 964
14.7 整理思路 965
14.8 總結(jié) 965
第五部分 高級(jí)動(dòng)畫(huà)、物理建模和優(yōu)化
第15章 3D角色動(dòng)畫(huà)、運(yùn)動(dòng)和碰撞檢測(cè) 968
15.1 新的游戲引擎模塊 968
15.2 3D動(dòng)畫(huà)簡(jiǎn)介 968
15.3 Quake II .MD2文件格式 969
15.3.1 .MD2文件頭 971
15.3.2 加載Quake II .MD2文件 979
15.3.3 使用.MD2文件實(shí)現(xiàn)動(dòng)畫(huà) 987
15.3.4 .MD2演示程序 995
15.4 不基于角色的簡(jiǎn)單動(dòng)畫(huà) 996
15.4.1 旋轉(zhuǎn)運(yùn)動(dòng)和平移運(yùn)動(dòng) 997
15.4.2 復(fù)雜的參數(shù)化曲線移動(dòng) 998
15.4.3 使用腳本來(lái)實(shí)現(xiàn)運(yùn)動(dòng) 999
15.5 3D碰撞檢測(cè) 1001
15.5.1 包圍球和包圍圓柱 1001
15.5.2 使用數(shù)據(jù)結(jié)構(gòu)來(lái)提高碰撞檢測(cè)的速度 1003
15.5.3 地形跟蹤技術(shù) 1003
15.6 總結(jié) 1004
第16章 優(yōu)化技術(shù) 1005
16.1 優(yōu)化技術(shù)簡(jiǎn)介 1005
16.2 使用Microsoft Visual C++和Intel VTune剖析代碼 1006
16.2.1 使用Visual C++進(jìn)行剖析 1006
16.2.2 分析剖析數(shù)據(jù) 1008
16.2.3 使用VTune進(jìn)行優(yōu)化 1009
16.3 使用Intel C++編譯器 1015
16.3.1 下載Intel的優(yōu)化編譯器 1015
16.3.2 使用Intel編譯器 1015
16.3.3 使用編譯器選項(xiàng) 1016
16.3.4 手工為源文件選擇編譯器 1017
16.3.5 優(yōu)化策略 1017
16.4 SIMD編程初步 1017
16.4.1 SIMD基本體系結(jié)構(gòu) 1019
16.4.2 使用SIMD 1019
16.4.3 一個(gè)SIMD 3D向量類 1030
16.5 通用優(yōu)化技巧 1036
16.5.1 技巧1:消除_ftol() 1036
16.5.2 技巧2:設(shè)置FPU控制字 1036
16.5.3 技巧3:快速將浮點(diǎn)變量設(shè)置為零 1037
16.5.4 技巧4:快速計(jì)算平方根 1038
16.5.5 技巧5:分段線性反正切 1038
16.5.6 技巧6:指針遞增運(yùn)算 1039
16.5.7 技巧7:盡可能將if語(yǔ)句放在循環(huán)外面 1039
16.5.8 技巧8:支化(branching)流水線 1040
16.5.9 技巧9:數(shù)據(jù)對(duì)齊 1040
16.5.10 技巧10:將所有簡(jiǎn)短函數(shù)都聲明為內(nèi)聯(lián)的 1040
16.5.11 參考文獻(xiàn) 1040
16.6 總結(jié) 1040
第六部分 附錄
附錄A 光盤內(nèi)容簡(jiǎn)介 1042
附錄B 安裝DirectX和使用Visual C/C++ 1044
B.1 安裝DirectX 1044
B.2 使用Visual C/C++編譯器 1044
B.3 編譯提示 1045
附錄C 三角學(xué)和向量參考 1047
C.1 三角學(xué) 1047
C.2 向量 1049
C.2.1 向量長(zhǎng)度 1050
C.2.2 歸一化 1050
C.2.3 標(biāo)量乘法 1051
C.2.4 向量加法 1052
C.2.5 向量減法 1052
C.2.6 點(diǎn)積 1053
C.2.7 叉積 1054
C.2.8 零向量 1055
C.2.9 位置向量 1055
C.2.10 向量的線性組合 1056
附錄D C++入門 1057
D.1 C++是什么 1057
D.2 必須掌握的C++知識(shí) 1059
D.3 新的類型、關(guān)鍵字和約定 1059
D.3.1 注釋符 1059
D.3.2 常量 1060
D.3.3 引用型變量 1060
D.3.4 即時(shí)創(chuàng)建變量 1061
D.4 內(nèi)存管理 1062
D.5 流式輸入/輸出 1062
D.6 類 1064
D.6.1 新結(jié)構(gòu) 1064
D.6.2 一個(gè)簡(jiǎn)單的類 1065
D.6.3 公有和私有 1065
D.6.4 類的成員函數(shù)(方法) 1066
D.6.5 構(gòu)造函數(shù)和析構(gòu)函數(shù) 1067
D.6.6 編寫構(gòu)造函數(shù) 1068
D.6.7 編寫析構(gòu)函數(shù) 1070
D.7 域運(yùn)算符 1071
   在類外部定義成員函數(shù) 1071
D.8 函數(shù)和運(yùn)算符重載 1072
D.9 基本模板 1074
D.10 異常處理簡(jiǎn)介 1075
   異常處理的組成部分 1076
D.11 總結(jié) 1078
附錄E 游戲編程資源 1079
E.1 游戲編程和新聞網(wǎng)站 1079
E.2 下載站點(diǎn) 1079
E.3 2D/3D引擎 1080
E.4 游戲編程書(shū)籍 1080
E.5 微軟公司的Direct X多媒體展示 1081
E.6 新聞組 1081
E.7 跟上行業(yè)的步伐 1081
E.8 游戲開(kāi)發(fā)雜志 1081
E.9 Quake資料 1082
E.10 免費(fèi)模型和紋理 1082
E.11 游戲網(wǎng)站開(kāi)發(fā)者 1082
附錄F ASCII碼表 1083

章節(jié)摘錄

版權(quán)頁(yè):   插圖:   1.朝向問(wèn)題 最后,作者想討論一下模型坐標(biāo)系下的朝向問(wèn)題。朝向指的是必須有某種定義(加載)3D模型的約定,否則將無(wú)法確定前面或上面是哪一向。例如,假設(shè)您在3D游戲中定義了如圖6.14所示的兩個(gè)物體。其中宇宙飛船的前面指向負(fù)2軸,上面為正Y軸;而機(jī)器人的前面為正z軸。您發(fā)現(xiàn)了其中的問(wèn)題嗎? 對(duì)于朝向問(wèn)題,處理方式有兩種。第一種方法是,在建模階段采用一種約定,規(guī)定所有模型的前方都必須是+z軸,上方為+y軸(也可以采用其他約定,只需統(tǒng)一即可)。第二種方法是,采用自己喜歡的方式建立物體模型,但讓軟件計(jì)算每個(gè)物體的主軸(最長(zhǎng)的軸),并使之與+z軸平行,然后計(jì)算第二個(gè)主軸,并使之與+y軸平行。這樣,不管加載時(shí)物體的朝向如何,物體的朝向都是合理的。作者的建議是,使用一種建模約定,而不要讓軟件去處理這項(xiàng)工作,因?yàn)檐浖荒芸紤]幾何形狀,而無(wú)法知道物體實(shí)際上看起來(lái)像什么。 在有些2000年以后推出的新型汽車(尤其是新型雷鳥(niǎo))中,前臉看起來(lái)像后面。加載這種汽車模型時(shí),很容易弄錯(cuò)朝向,導(dǎo)致駕駛汽車時(shí)實(shí)際上是在倒車。 提示:即使在建模時(shí)遵循了某種朝向約定,在加載物體時(shí)也可能對(duì)其進(jìn)行旋轉(zhuǎn)、縮放或平移。例如,可能有一個(gè)名為L(zhǎng)oad 3D Mesh0的函數(shù),它加載物體,并允許您對(duì)物體進(jìn)行變換。傳遞給系統(tǒng)的模型坐標(biāo)將是變換后的坐標(biāo)。 2.比例問(wèn)題 模型的比例也是一個(gè)問(wèn)題。在圖6.15中,一個(gè)模型表示一輛車輪半徑為100的汽車,另一個(gè)模型表示一輛車輪半徑也為100的摩托車。這不合理,因?yàn)樗鼈兊目s放比例都為1:l,這是不正確的。對(duì)于這種問(wèn)題,一種解決方案是,在建模時(shí)使用相同的比例,這可能意味著建模程序中的1個(gè)單位總是相當(dāng)于游戲引擎中的lcm 0另一種解決方案是,建立每個(gè)物體模型時(shí),都將模型坐標(biāo)空間范圍設(shè)置為1X1×1(歸一化坐標(biāo)),然后在加載模型時(shí)對(duì)其進(jìn)行縮放。就個(gè)人而言,我總是使用相同的比例來(lái)創(chuàng)建所有的模型,這樣無(wú)論1個(gè)單位表示1cm、1m還是1km,模型的大小都相同。

媒體關(guān)注與評(píng)論

這是向程序員介紹從零開(kāi)始創(chuàng)建下一代視頻游戲所需技能的一本重要著作,很榮幸應(yīng)邀為其作序。從繪制像素開(kāi)始介紹創(chuàng)建實(shí)時(shí)3D引擎的著作并不多。以前,先進(jìn)技術(shù)和Atari公司開(kāi)發(fā)的粗糙游戲形成了鮮明的反差,對(duì)此進(jìn)行反思時(shí)發(fā)現(xiàn),我們確實(shí)曾致力于提高技術(shù)發(fā)展水平,但看起來(lái)收效甚微。回顧過(guò)去,早期的游戲從技術(shù)的角度看根本算不上計(jì)算機(jī)游戲,它們不過(guò)是奇特的信號(hào)生成器,是使用計(jì)數(shù)器和基于布爾邏輯的移位寄存器的狀態(tài)機(jī),由拼湊而成的MSI(中等規(guī)模集成)門組成。讀者可能還記得我于20世紀(jì)70年代開(kāi)發(fā)的第一款游戲——Computer Space,它面世的時(shí)間比Intel 4004早了4年,比8080早6年。我曾希望有微處理器來(lái)運(yùn)行它!在那時(shí)候,對(duì)于任何重要的實(shí)時(shí)計(jì)算而言,典型的時(shí)鐘速度太慢了。我們開(kāi)發(fā)的第一款使用微處理器的游戲是Asteriods,即使是這樣,仍使用了大量的硬件來(lái)支持該程序,因?yàn)槲⑻幚砥鞑荒芡瓿绍浖乃泄ぷ鳌.?dāng)前,我們正在通向創(chuàng)建照片級(jí)圖像的道路上邁進(jìn),雖然這種目標(biāo)還未達(dá)到。能夠動(dòng)態(tài)地創(chuàng)建這樣的圖像確實(shí)令人興奮。軟件和硬件工具為游戲制作人員提供了非常強(qiáng)大的創(chuàng)建真實(shí)感游戲世界、環(huán)境和角色的功能。使用這些功能可以縮短游戲制作周期,增加財(cái)富,使開(kāi)發(fā)新的游戲項(xiàng)目成為可能。André LaMothe不但諳熟這些技術(shù),還有獨(dú)特的“游戲感”。多年來(lái),我見(jiàn)過(guò)很多精通尖端技術(shù)的專家,但缺乏編寫優(yōu)秀游戲必備的游戲感;而其他人有良好的游戲感,卻是平庸的程序員。André不但是真正的游戲大師,還是軟件大師,這一點(diǎn)在他撰寫的每本著作中都表現(xiàn)得淋漓盡致。在我們最近合作開(kāi)發(fā)的一個(gè)項(xiàng)目中,André對(duì)尖端技術(shù)的精通、歷史知識(shí)的廣博以及對(duì)早期一些默默無(wú)聞?dòng)螒虻牧私庵?,給我留下了深刻的印象。更值得一提的是,他竟然只花了19天的時(shí)間就為我編寫了一款完整的游戲!了解一些成功案例很容易,但對(duì)敗筆也了如指掌很難。是的,Atari確實(shí)有一些糟糕的敗筆,但如大家所知,我們也開(kāi)發(fā)了很多著名的經(jīng)典游戲。希望讀者喜歡本書(shū),并以此為跳板,在未來(lái)開(kāi)發(fā)出讓我流連忘返的優(yōu)秀游戲。Atari公司創(chuàng)始人Nolan Bushnell

編輯推薦

《3D游戲編程大師技巧(套裝上下冊(cè))》編輯推薦:Amazon.com好評(píng)如潮、游戲編程與3D圖形學(xué)領(lǐng)域必讀必備的重量級(jí)著作,全面覆蓋3D光柵化、算法及實(shí)現(xiàn)的高級(jí)技術(shù)。姚曉光、史曉明、沙鷹等專業(yè)人士重磅推薦。

名人推薦

《3D游戲編程大師技巧》由淺入深地介紹了3D圖形學(xué)基礎(chǔ)知識(shí)及其在游戲開(kāi)發(fā)中的應(yīng)用。本書(shū)是《Windows游戲編程大師技巧(第2版)》的姊妹篇,但是內(nèi)容專注于3D編程,層次也更深一些。但作者André LaMothe一向善于把復(fù)雜問(wèn)題簡(jiǎn)單化,因此,讀者可以較為輕松地讀懂本書(shū),并掌握3D圖形編程的核心技能。 ——騰訊游戲琳瑯天上工作室總經(jīng)理 姚曉光(NPC6)André LaMothe的這本書(shū)立足于3D軟件圖形編程,講的不是如何利用現(xiàn)有接口實(shí)現(xiàn),而是如何自行實(shí)現(xiàn)的方法。本書(shū)不需要有很深的3D幾何知識(shí),通篇會(huì)逐步帶你學(xué)習(xí)3D圖形學(xué)的基礎(chǔ)知識(shí)和用法,并且擁有很詳細(xì)的實(shí)現(xiàn)細(xì)節(jié)。對(duì)于希望更深入學(xué)習(xí)3D圖形應(yīng)用開(kāi)發(fā)的人來(lái)說(shuō),建議好好讀一讀這本書(shū)。 ——BigWorld高級(jí)軟件工程師 史曉明(polyrandom)《3D游戲編程大師技巧》是一部獨(dú)一無(wú)二的書(shū)。與現(xiàn)今充斥市場(chǎng)的各類速成類書(shū)籍不同,本書(shū)秉承其作者的一貫風(fēng)格,由淺入深地引領(lǐng)讀者進(jìn)入3D游戲編程的世界,在領(lǐng)會(huì)3D游戲編程技巧的同時(shí)也打下良好的理論基礎(chǔ)。如果您希望有朝一日自行編寫3D游戲和引擎,我推薦您將這本書(shū)列入基礎(chǔ)必讀書(shū)單。 ——《Windows游戲編程大師技巧(第2版)》譯者 沙鷹

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    3D游戲編程大師技巧(上下冊(cè)) PDF格式下載


用戶評(píng)論 (總計(jì)59條)

 
 

  •   是繼續(xù) 第一本 windows 游戲編程大師的續(xù)作,但是有在基礎(chǔ)上進(jìn)行了擴(kuò)展(3D),這本書(shū)由于分成上下二冊(cè),所以較 第一本 講的更詳細(xì)!
  •   Windows游戲開(kāi)發(fā)經(jīng)典書(shū)籍,必看之作。。。。
  •   想學(xué)習(xí)一下網(wǎng)絡(luò)游戲開(kāi)發(fā),這個(gè)還是不錯(cuò)的
  •   非常人總是與眾不同.作者就是一位這樣的獨(dú)特的人類.他用獨(dú)特的思維從本書(shū)中教導(dǎo)新手怎樣進(jìn)行游戲設(shè)計(jì)..作為作者的同類.我也非常喜歡他的風(fēng)格.這本書(shū)將是我學(xué)習(xí)的階梯了.
  •   以前這本書(shū)只有影印的渣渣pdf,看著蛋疼。于是就去找其它的有關(guān)游戲變成的書(shū),看了那么多,最后還是發(fā)現(xiàn),這本書(shū)才是真正需要找的書(shū)??傊浅M意,喜歡的就趕緊買吧,以后絕版了后悔都來(lái)不及了。
  •   這本書(shū)不是教你怎樣使用Direct3D,而是讓你利用高等數(shù)學(xué)親自做一個(gè)獨(dú)一無(wú)二的3D引擎。需要一些數(shù)學(xué)基礎(chǔ)。但是絕對(duì)有閱讀價(jià)值,非常好的書(shū),還能學(xué)數(shù)學(xué)
  •   這本書(shū)雖然是十年以前的書(shū)了,但是我覺(jué)得他適合新手。有些人說(shuō),現(xiàn)在已經(jīng)有硬件實(shí)現(xiàn)3D了,但是你會(huì)軟3D 難道你不會(huì)硬件的?這本書(shū)講的是方法和思想。directX已經(jīng)不重要了
  •   書(shū)其實(shí)介紹的是directX9.0,不是最新的大家需要注意,不過(guò)不妨礙學(xué)習(xí)技術(shù),思想和方法都是大同小異的
  •   這本書(shū)絕對(duì)是經(jīng)典,對(duì)數(shù)學(xué)要求比有點(diǎn)高.值得收藏.
  •   不用多說(shuō),大師作品。
  •   沒(méi)得說(shuō),這本書(shū)是經(jīng)典中的典中,之前一直是絕版狀態(tài),多少人想要買都買不到,跑了各大新華書(shū)店也沒(méi)淘到。這本書(shū)再版的時(shí)候,終于分成了兩冊(cè),其實(shí)一冊(cè)實(shí)在是太大了,不方便拿!兩冊(cè)方便拿了不說(shuō),看得時(shí)候也會(huì)有動(dòng)力,不再像以前看了很多結(jié)果看過(guò)的厚度比也沒(méi)多少,很無(wú)力!
  •   再版,經(jīng)典不容錯(cuò)過(guò)
  •   有些經(jīng)典是必讀的,你懂得。。
  •   非常好的一本書(shū),講的非常透徹,還有代碼實(shí)現(xiàn),
  •   以前一直買不到,這次再版終于如愿以償。
  •   有個(gè)同學(xué)對(duì)這方面的書(shū)很感興趣,應(yīng)該是不錯(cuò)的,幫他買了好幾本這種書(shū)。
  •   還沒(méi)有開(kāi)始讀,之前在網(wǎng)上看的電子版,感覺(jué)不錯(cuò),才到網(wǎng)上買的。這個(gè)版本中有光盤不錯(cuò)。
  •   很好很不錯(cuò),頂一個(gè)!學(xué)習(xí)中....
  •   內(nèi)容稍微老些,不過(guò)也是簡(jiǎn)單易懂,入門必備
  •   講的很全面,可惜內(nèi)容有點(diǎn)舊
  •   #蘭陵王妃張含韻#@張含韻多看些演技好的演員演的劇電影什么的看他們是怎么演的多觀察磨練演技多看些書(shū)沉淀自己加油!一邊拍好的戲一邊多出好歌!喜歡不畫(huà)眼影笑眼彎彎像月亮的你!期待不畫(huà)眼影自然的張含韻女神!你要一直努力一直進(jìn)步!勝不驕!行如逆水行舟不進(jìn)則退!含韻每次出來(lái)都會(huì)進(jìn)步!有了質(zhì)感的加強(qiáng)!再加上她的努力!我覺(jué)得她能詮釋好這個(gè)角色!唱好自己的好歌和夢(mèng)想!不要看中片酬!只要好片就可以演了!記得當(dāng)初怎么代言蒙牛的!哈哈!也希望你能選個(gè)好的劇本!好的劇情!這樣才能讓觀眾覺(jué)得你演戲好看!
  •   還沒(méi)讀,希望學(xué)習(xí)到很多東西
  •   書(shū)真的非常不錯(cuò),性價(jià)比很高
  •   很好??!對(duì)我們來(lái)說(shuō)有幫助。
  •   夢(mèng)寐以求的書(shū)籍!~
  •   這個(gè)真是不錯(cuò)
  •   經(jīng)典就是經(jīng)典,哈哈哈哈哈哈
  •   書(shū)不錯(cuò),物流很給力,滿意
  •   有點(diǎn)厚了
  •   值得收藏,很有參考價(jià)值。
  •   只是書(shū)頁(yè)弄卷了
  •   不錯(cuò) 講解的非常全面。
  •   期待已久,終于拿到了
  •   當(dāng)當(dāng)網(wǎng)您好。請(qǐng)問(wèn)書(shū)上說(shuō)隨書(shū)附送光盤??墒俏覜](méi)有拿到。請(qǐng)問(wèn)能給我嗎。沒(méi)有光盤這書(shū)沒(méi)法看。
  •   之前啃了pdf,這次再版必買。。。
  •   沒(méi)看具體不知道
  •   關(guān)于3D游戲編程的好書(shū)不太多,初學(xué)者依樣畫(huà)葫蘆,從頭到尾過(guò)一遍,可以入門了。
  •   還“2012年最新”呢?! 拆封了才看到是2003年的書(shū),講的東西其他很多書(shū)都有了,完全是出版社為了完成任務(wù)或譯者評(píng)職稱才出的,勸大家有心的還是把這個(gè)錢省下來(lái)買其他書(shū)吧
  •   五星僅僅是沖著內(nèi)容。紙張真不好,味道也很重,可以配套買防毒面具和護(hù)目鏡再看
  •   書(shū)的下冊(cè)中間有很幾十頁(yè)損毀
  •   這本經(jīng)典書(shū)終于重印了,雖然這回書(shū)的紙質(zhì)一般般,但就沖它的內(nèi)容值得打個(gè)5星。
  •   內(nèi)容不錯(cuò),但是校稿的人太不認(rèn)真,書(shū)中錯(cuò)別字一堆居然付印了
  •   以前還在上學(xué)的時(shí)候在學(xué)校圖書(shū)館看過(guò),帶我進(jìn)入了3D游戲開(kāi)發(fā)世界,后來(lái)想買但是書(shū)店告知已經(jīng)絕版了,當(dāng)時(shí)花了幾十塊復(fù)印了中間幾章(哎,今年真是祭奠青春的年份?。?,沒(méi)想到現(xiàn)在終于重印了。買一套,雖然內(nèi)容有些老了(Dx和開(kāi)發(fā)流程在這些年有些變化了),但是里面的思想現(xiàn)在品起來(lái)還是很經(jīng)典。留個(gè)兒子(在配上windows游戲編程大師技巧),希望他長(zhǎng)大也能愛(ài)上編程。至于這本書(shū)本事,我相信:只要你瀏覽到這個(gè)頁(yè)面的都是知道這本書(shū)價(jià)值的人。
  •   其中有20頁(yè)左右印刷有問(wèn)題,兩頁(yè)印成同一頁(yè)
  •   哎,看到第四章數(shù)學(xué)部分,簡(jiǎn)單的公式各種印刷錯(cuò)誒
  •   經(jīng)典的書(shū),但是紙張是我買過(guò)的正版書(shū)里最差的,感覺(jué)紙張還不如某些盜版書(shū),單說(shuō)內(nèi)容打9分,單說(shuō)紙張 0 分
  •   不做評(píng)論,哈哈,請(qǐng)大家參考其他人的評(píng)論。
  •   還可以吧,中文翻譯版,以前的經(jīng)典,現(xiàn)在重新印刷了,但是里面明顯的錯(cuò)誤還是有的!有時(shí)間的可以看看,用C語(yǔ)言寫的!C的風(fēng)格
  •   C++程序員,看這本書(shū)非常有益但是像我這種C#初級(jí)程序員為了了解第一章的代碼還要從C++學(xué)起C++是高級(jí)語(yǔ)言,但是還牽涉了系統(tǒng)底層的知識(shí)如果不能了解C++的語(yǔ)言特性,看著本書(shū)可能會(huì)有點(diǎn)累。
  •   這書(shū)是經(jīng)典。收藏一套。
  •   很好的一本書(shū),雖然有的地放翻譯的不咋地,但還是不錯(cuò)的,書(shū)頁(yè)很新
  •   服務(wù)還不錯(cuò),就是收到的時(shí)候書(shū)皮褶皺了,我這人愛(ài)整齊干凈,尤其愛(ài)書(shū),這里有些遺憾……
  •   替人買的,說(shuō)是不錯(cuò),還好吧
  •   內(nèi)容有點(diǎn)老,但是書(shū)不錯(cuò),說(shuō)是用dx8接口用dx9編譯,剛開(kāi)始看到dx8我就傻了,還以為是過(guò)時(shí)的
  •   沒(méi)有傳說(shuō)的紙張重復(fù)問(wèn)題,紙質(zhì)一般,但不影響閱讀,整體滿意.上冊(cè)大約花了10天看完,發(fā)現(xiàn)存在個(gè)中錯(cuò)別字,講述到位詳細(xì)(甚至有點(diǎn)啰嗦),作者有很好的化繁為簡(jiǎn)的能力,正在開(kāi)始看下冊(cè)
  •   終于等到了這個(gè)本書(shū)的再版,立馬買了一本收藏研讀
  •   字體太小,,內(nèi)容確實(shí)有點(diǎn)過(guò)時(shí)
  •   評(píng)分很高的一本
  •   可惜光盤碎了
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7