摘要: 下面幾點說明怎樣初始化Direct3D。根據下邊的步驟你能初始化Direct3D:
1.獲得一個IDirect3D9接口指針。這個接口用于獲得物理設備的信息和創建一個IDirect3DDevice9接口,它是一個代表我們顯示3D圖形的物理設備的C++對象。
2.檢查設備能力(D3DCAPS9),搞清楚主顯卡是否支持硬件頂點處理。我們需要知道假如它能支持,我們就能創建IDirect3DDevice9接口。
閱讀全文
摘要: 由于使用像素矩陣來表示圖像,在顯示時會出現鋸齒狀,Multisampling就是使其變得平滑的技術。它的一種最普通的用法即為——全屏抗鋸齒(看圖1.3)。
D3DMULTISAMPLE_TYPE枚舉類型使我們可以指定全屏抗鋸齒的質量等級:
D3DMULTISAMPLE_NONE——不使用全屏抗鋸齒。
D3DMULTISAMPLE_1_SAMPLE…D3DMULTISAPLE_16_SAMPLE——設定1~16級的等級。
閱讀全文
摘要: Direct3D是一種低層圖形API,它能讓我們利用3D硬件加速來渲染3D世界。我們可以把Direct3D看作是應用程序和圖形設備之間的中介。例如通知圖形設備清空屏幕,應用程序將調用Direct3D的IDirect3DDevice9::Clear方法。圖1.1顯示了應用程序、 Direct3D和圖形設備之間的關系。
圖1.1中Direct3D所表示的是Direct3D中已定義的,供程序員使用的Direct3D接口和函數的集合。這些接口和函數代表了當前版本的 Direct3D所支持的全部特性。注意:僅僅因為Direct3D支持某種特性,并不意味著你所使用的圖形硬件(顯卡)也能支持它。
閱讀全文
摘要: 幾何學中,我們用有向線段表示向量,如圖1。向量的兩個屬性是他的長度和他的頂點所指的方向。因此,可以用向量來模擬既有大小又有方向的物理模型。例如,以后我們要實現的粒子系統。我們用向量來模擬粒子的速度和加速度。在3D計算機圖形學中我們用向量不僅僅模擬方向。例如我們常常想知道光線的照射方向,以及在3D世界中的攝象機。向量為在3維空間中表示方向的提供了方便。
閱讀全文
摘要: 一個平面能通過一個向量n和平面上的一個點p0來描述。這個向量n垂直于平面,它被稱為此平面的法向量(如圖11)。
閱讀全文
摘要: 當用Direct3D編程時,我們使用4×4矩陣來進行矩陣變換。用它的原因是:我們設置一個4×4矩陣X是為了更精確的描述矩陣變換。同樣我們設置一個相匹配的點或者把向量的分量放置到一個1×4的行矩陣V中。VX的乘積返回一個新的向量V’。例如:讓X沿著x軸平移10個單位同時V = [2, 6, –3, 1],乘積VX = V’= [12, 6, –3, 1]。
閱讀全文
摘要: 一個m×n的矩陣是由m行和n列的數字組成的矩陣列。行和列的數字就是這個矩陣的維數。我們通過寫在下方的數字識別矩陣清單,數字中的第一個表示行第二個表示列。例如下邊的M是3×3矩陣,B是2×4矩陣, C是3×2矩陣。
閱讀全文
摘要: 我們能夠通過分別把兩個向量的各個分量相加得到向量之和,注意在相加之前必須保證它們有相同的維數。
u + v = (ux+ vx, uy+ vy, uz+ vz)
圖5顯示的是幾何學上的向量相加。
閱讀全文
摘要: 幾何學中,我們用有向線段表示向量,如圖1。向量的兩個屬性是他的長度和他的頂點所指的方向。因此,可以用向量來模擬既有大小又有方向的物理模型。例如,以后我們要實現的粒子系統。我們用向量來模擬粒子的速度和加速度。在3D計算機圖形學中我們用向量不僅僅模擬方向。例如我們常常想知道光線的照射方向,以及在3D世界中的攝象機。向量為在3維空間中表示方向的提供了方便。
向量與位置無關。有同樣長度和方向的兩個向量是相等的,即使他們在不同的位置。觀察彼此平行的兩個向量,例如在圖1中u和v是相等的。
閱讀全文
摘要: 我們將討論渲染一幅帶有基本光照的單個圖像的大體過程,這里不考慮動畫和全局光照,如陰影和輻射度。
此外,注意這里只從概念上講解通過圖形管道的數據流,其順序并不是固定的。實踐中,我們也許會為了性能的優化而并行或亂序執行一些任務。比如,考慮到不同的渲染API,我們可能首先變換和照明所有頂點,然后才進一步的處理(進行裁剪和剔除),或者會并行處理二者,也可能在背面剔除之后再進行光照會得到更高效率。
閱讀全文