青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

■ DirectX 9 Program

網格模型高級技術
     摘要: 在三維圖形程序設計中,網格模型占有非常重要的地位,而且也是比較復雜的部分,特別是包含動畫和蒙皮信息的網格模型。

.x文件格式最初是為傳統的Direct3D保留模式而設計的,在DirectX 6.0問世后,針對立即模式對它作過一次擴展。要想在Direct3D程序中靈活自如地使用網格模型,應當深入理解.x文件格式。   閱讀全文

posted @ 2008-06-14 10:25 lovedday 閱讀(7102) | 評論 (2)  編輯

高級紋理映射技術
     摘要: 紋理映射在三維圖形程序設計中具有非常重要的作用,三維場景中的許多特殊效果都是通過紋理映射來實現的。例如通過紋理映射模擬復雜的光照效果,物體表面對周圍環境的反射效果等。

Direct3D最多支持8層紋理,也就是說,在一個三維物體的表面可以同時擁有1~8張不同的紋理貼圖。Direct3D能夠在一個渲染過程中把這些紋理顏色依次混合,渲染到同一個物體的表面。每一個紋理層對應0~7的索引序號,多層紋理映射能夠模擬更為真實的三維世界。   閱讀全文

posted @ 2008-05-22 18:12 lovedday 閱讀(6846) | 評論 (5)  編輯

Direct3D中的字體與文本顯示
     摘要: 圖形系統中為了獲得當前運行程序的相關信息,往往需要在屏幕上顯示文本,Direct3D的功能擴展接口ID3DXFont對此提供了方便的解決方法。

使用接口ID3DXFont繪制文本,首先需要通過函數D3DXCreateFont()創建ID3DXFont字體對象。ID3DXFont接口封裝了 Windows字體和Direct3D設備指針,D3DXCreateFont()函數通過Windows字體和Direct3D設備指針創建 ID3DXFont對象。  閱讀全文

posted @ 2008-05-11 20:50 lovedday 閱讀(2324) | 評論 (0)  編輯

Direct3D中的霧化
     摘要: 霧化效果是計算機圖形學中應用最廣的效果之一,它不僅能顯著地增加視覺效果的真實感,并可以提供一定的深度感。在實時圖形程序,特別是游戲設計程序中,為了確保圖形系統的運行速度,圖形開發人員往往在位于觀察點遠處的場景使用較為簡單的三維模型,甚至不繪制物體,而在近處使用復雜模型,這樣就可能造成物體變形、突然出現或突然消失等失真現象,霧化效果可以有效地避免這種失真現象。  閱讀全文

posted @ 2008-05-11 18:21 lovedday 閱讀(2028) | 評論 (0)  編輯

深度測試與alpha混合
     摘要: 在繪制復雜的三維場景時,不可避免地會出現物體間的相互遮擋,在這種情況下,為了正確地繪制場景需要使用深度測試。半透明物體的繪制不同于不透明物體, Direct3D通過alpha混合實現半透明物體的繪制。深度測試可以簡化復雜場景的繪制,alpha混合可以使繪制的三維場景更完整、更逼真。

在復雜的場景中,通常有多個物體需要繪制,這些物體之間通常會存在遮擋關系,離觀察點較遠的物體會因為近處物體的者的遮擋而不可見或只有部分可見,Direct3D圖形系統提供了深度測試功能來實現這種效果。  閱讀全文

posted @ 2008-05-10 17:02 lovedday 閱讀(4148) | 評論 (0)  編輯

使用.x文件模型
     摘要: 利用.x文件模型渲染三維模型,首先需要將.x文件中的各種數據分別加載到內存中,主要包括頂點數據、材質數據和紋理數據等。

Direct3D擴展實用庫定義了多邊形網格模型接口ID3DXMesh來表示一個復雜的三維物體模型,它是一個COM接口,繼承自ID3DXBaseMesh。

Direct3D擴展實用庫函數D3DXCreateMesh()可用于創建一個Direct3D網格模型對象。  閱讀全文

posted @ 2008-05-09 15:33 lovedday 閱讀(2526) | 評論 (0)  編輯

紋理映射基礎
     摘要: 為了使渲染的圖形看起來更真實,Direct3D提供了在物體表面繪制紋理的功能。一般說來,紋理是表示物體表面細節的一幅或幾幅二維圖形,也稱紋理貼圖(texture)。當把紋理按照特定的方式映射到物體表面的時候,能使物體看上去更加真實。當前流行的圖形系統中,紋理繪制已經成為一種必不可少的渲染方法。在理解紋理映射時,可以將紋理看作應用程序在物體表面的像素顏色。在真實世界中,紋理表示一個對象的顏色、圖案以及觸覺特征。但在Direct3D 中,紋理只表示對象表面的彩色圖案,它不能改變對象的幾何形式。更進一步說,它只是一種高強度計算行為。   閱讀全文

posted @ 2008-05-07 18:08 lovedday 閱讀(3830) | 評論 (0)  編輯

深入理解光照計算模型
     摘要: Ambient lighting provides constant lighting for a scene. It lights all object vertices the same because it is not dependent on any other lighting factors such as vertex normals, light direction, light position, range, or attenuation. It is the fastest type of lighting but it produces the least realistic results. Direct3D contains a single global ambient light property that you can use without creating any light. Alternatively, you can set any light object to provide ambient lighting.   閱讀全文

posted @ 2008-05-05 11:44 lovedday 閱讀(1602) | 評論 (0)  編輯

光照與材質
     摘要: 在三維圖形程序中使用光照效果能夠有效地增強場景的真實感。在Direct3D中,通過計算場景中的光線和物體表面材質反射光線顏色的數學交互,可使光線模型接近于真實世界的照明系統。

在真實世界中,光線在到達眼睛之前經過了物體表面的多次反射,每次反射時,物體表面都會吸收一些光,有些被隨機反射擴散出去,其余的到達下一個物體的表面或眼睛。真實世界中光線反射的效果就是光線跟蹤算法需要模擬實現的。盡管光線跟蹤算法能夠創建非常逼真的與自然界中觀察到極為相似的景象,但是還沒有實時程序能夠完成這些運算。考慮到實時渲染的需要,Direct3D使用更簡單的方法進行光照計算。Direct3D光照計算模型包括4種:環境光、漫反射光、鏡面反射光和自發光。它們的結合能靈活高效地解決三維圖形程序中的光照問題。  閱讀全文

posted @ 2008-05-05 09:32 lovedday 閱讀(1985) | 評論 (0)  編輯

頂點坐標變換
     摘要: 空間中的物體需要使用三維坐標來描述,而顯示器是一個二維的表面,所以在屏幕上渲染一個三維場景時,首先需要將描述空間物體的三維坐標變換為二維坐標(世界坐標到屏幕坐標),這在Direct3D中稱為頂點坐標變換。頂點坐標變換通常通過矩陣來完成。可以把頂點坐標變換想象成攝像過程,三維世界的景物通過攝像機的拍攝顯示在二維的相片上,所不同的是把相片換成了屏幕。   閱讀全文

posted @ 2008-05-02 14:08 lovedday 閱讀(2862) | 評論 (6)  編輯

Direct3D中的顏色和資源
     摘要: 顏色在Direct3D中占據比較重要的位置,所有的操作無論是光照還是紋理貼圖,其結果最終都歸結到如何影響每個頂點或像素的顏色。

Direct3D資源是指用來渲染一個場景的紋理或緩沖區。應用程序需要創建、加載、復制、使用資源。Direct3D所有的資源,包括幾何數據資源 IDirect3DIndexBuffer9、IDirect3DVertexBuffer9等,都繼承于接口IDirect3DResource9。紋理資源IDirect3DCubeTexture9,IDirect3DTexture9和IDirect3DVolumeTextre9是從接口 IDirect3DResource9的子接口IDirect3DBaseTexture9中繼承而來的。  閱讀全文

posted @ 2008-05-01 17:16 lovedday 閱讀(2926) | 評論 (2)  編輯

坐標系與基本圖元
     摘要: 圖元(primitives)是Direct3D中定義的基本圖形表示,它是組成一個單一實體的一組頂點。最簡單的圖元是三維坐標系中多個點的集合,稱為點列表(point list)。通常,圖元是多邊形(polygon),一個多邊形是由至少三條邊組成的封閉圖形。最簡單的多邊形是三角形,Direct3D使用三角形來構成大多數其他多邊形,這是因為三角形的三個頂點肯定是共面的,而渲染不共面的頂點效率比較低。通過組合三角形可以形成更大、更復雜的多邊形和網格(mesh)。   閱讀全文

posted @ 2008-05-01 16:16 lovedday 閱讀(1602) | 評論 (0)  編輯

【ZT】D3DFVF_XYZ和D3DFVF_XYZRHW的區別

posted @ 2008-04-30 10:44 lovedday 閱讀(5342) | 評論 (5)  編輯

Direct3D程序設計基礎
     摘要: Microsoft Direct3D的一種實現方式是通過組件對象模型(Component Object Model, COM)及其接口實現的,在用C++語言和COM接口方式開發的程序中可以直接訪問這些接口和對象。Direct3D對象是Direct3D程序中需要創建的第一個對象,也是需要最后一個釋放的對象,這里所說的對象是指COM對象。通過Direct3D對象,可以枚舉和檢索Direct3D設備,這樣應用程序就可以在不需要創建設備對象的前提下選擇Direct3D渲染設備。  閱讀全文

posted @ 2008-04-29 15:45 lovedday 閱讀(1936) | 評論 (1)  編輯

【ZT】模擬實現ID3DXSkinInfo::UpdateSkinnedMesh
     摘要: FinalPos = MeshPos + ∑( Difference_i * Weight_i)

= MeshPos + ∑( (NewMeshPos_i - MeshPos) * Weight_i )

= MeshPos + ∑( (MeshPos × OffsetMatix_i × CombinedMatrix_i - MeshPos) * Weight_i ) [1]  閱讀全文

posted @ 2008-04-22 15:22 lovedday 閱讀(1091) | 評論 (0)  編輯

D3D中的拾取
     摘要: 假設用戶點擊了屏幕上的點 s (x, y)。 從圖15.1我們能看到用戶選取了茶壺。無論如何,應用程序無法根據給定的s點就立即確定茶壺是被選取。

我們知道一些知識:關于茶壺和它的關聯點s,茶壺投影在圍繞s點的區域,更準確的說是:它投影到投影窗口上圍繞p點的區域,與它對應的屏幕點是s。因為這個問題依賴于3D物體與它的投影之間的關系,我們看圖15.2就可以了解。  閱讀全文

posted @ 2008-04-04 16:31 lovedday 閱讀(5183) | 評論 (2)  編輯

D3D中的粒子系統
     摘要: 許多自然現象是由很多小的小顆粒組成的,它們有相似的行為。(例如,雪花落下,閃爍的火焰,沖出槍管的“子彈”),粒子系統用來模擬這種現象。

粒子是一個很小的對象,它通常用來模擬數學中的一個點。點元是用來顯示粒子的很好的方案,可是點元被光柵化成一個簡單的像素。這沒給我們多少靈活性,因為我們想有各種大小不同的粒子,并且把整個紋理平滑映射到這些粒子上。在Direct3D 8.0以前,因為點元方法的局限性而完全不使用他們。代替的方法是程序員將使用公告板去顯示粒子,一個板是一個方格,世界矩陣用它來確定方向,使它總是朝向照相機。   閱讀全文

posted @ 2008-04-04 13:13 lovedday 閱讀(3028) | 評論 (0)  編輯

D3D中的地形繪制基礎
     摘要: 實際上,地形網格不比三角形網格復雜,圖13.1.(a)所示,網絡的每個頂點指定了高度,格子模型用這種方式顯示從山脈到河流的平滑過渡。圖13.1 (b),模擬自然地形。當然,我們可以用漂亮的紋理表現沙石地,綠色的山丘。圖13.1.(c)雪山效果。   閱讀全文

posted @ 2008-04-02 21:43 lovedday 閱讀(3946) | 評論 (1)  編輯

設計一個靈活的Camera類
     摘要: 我們使用D3DXMatrixLookAtLH函數來計算視圖空間變換矩陣。這個函數對于在固定位置布置和對準攝像機是非常好用的,不過它的用戶接口對于要響應用戶輸入來實現攝像機移動就不那么好用了。這就激發我們用我們自己的方法來解決,這里我們展示了怎樣實現一個Camera類,它使我們能夠比 D3DXMatrixLookAtLH函數更好地操作攝像機,并且可以用來作為飛行模擬攝像機和第一人稱視角攝像機。   閱讀全文

posted @ 2008-03-30 15:19 lovedday 閱讀(2208) | 評論 (0)  編輯

D3D中的網格模型
     摘要: ID3DXMesh接口的主要功能繼承自ID3DXBaseMesh父接口,了解這些是很重要的,其它一些mesh接口如ID3DXPMesh也是繼承自ID3DXBaseMesh。  閱讀全文

posted @ 2008-03-29 19:23 lovedday 閱讀(1731) | 評論 (0)  編輯

D3D中的字體繪制
     摘要: 在D3DX庫中提供了一個ID3DXFont接口,它能被用于在Direct3D應用程序中繪制文字。  閱讀全文

posted @ 2008-03-26 18:52 lovedday 閱讀(1259) | 評論 (0)  編輯

D3D中的模板緩存
     摘要: 模板緩存是一個離屏緩存,我們能夠用它來完成一些特效。模板緩存與后臺緩存和深度緩存有相同的定義,因此在模板緩存中的像素與后臺緩存和深度緩存中的像素是相協調的。就象名字所說,模板緩存就象一個模板它允許我們刷新渲染后緩存的某個部分。   閱讀全文

posted @ 2008-03-25 12:28 lovedday 閱讀(2194) | 評論 (0)  編輯

D3D中的Alpha融合技術
     摘要: 我們介紹一種叫做混合(blending)的技術,它允許我們混合像素,我們通常用已經光柵化的像素光柵化同一位置的像素。換句話說就是我們在圖元上混合圖元,這種技術允許我們完成多種特效。  閱讀全文

posted @ 2008-03-18 14:57 lovedday 閱讀(1765) | 評論 (1)  編輯

D3D中的紋理映射
     摘要: 紋理映射是一種允許我們為三角形賦予圖象數據的技術;這讓我們能夠更細膩更真實地表現我們的場景。例如,我們能夠創建一個立方體并且通過對它的每個面創建一個紋理來把它變成一個木箱(如圖6.1)。

在Direct3D中一個紋理是通過IDirect3DTexture9接口來表現的,一個紋理是一個類似像素矩陣的表面它能夠被映射到三角形上。  閱讀全文

posted @ 2008-03-17 17:50 lovedday 閱讀(1531) | 評論 (0)  編輯

D3D中的光照
     摘要: 為了提高場景的真實性,我們可以為其加入燈光。燈光也能幫助表現物體的立體感以及物體的實體形狀。當使用燈光時,我們不再自己指定頂點的顏色; Direct3D中每個頂點都通過燈光引擎來計算頂點顏色,該計算是基于定義的燈光資源,材質以及燈光資源關心的表面方向。通過燈光模型計算頂點顏色會得到更真實的場景。   閱讀全文

posted @ 2008-03-16 20:47 lovedday 閱讀(1563) | 評論 (0)  編輯

D3D中的顏色
     摘要: 在Direct3D中,顏色是使用RGB三部分來描述的。也就是說,我們要分別指定紅、綠和藍三種顏色的值。混合這三個顏色決定最終的顏色。利用這三種顏色我們能夠表現數萬種顏色。

我們使用兩種不同的結構來存儲RGB數據。這第一種是D3DCOLOR,它實際上是一個DWORD類型即32位。在D3DCOLOR類型中的這些位按照8-bit被分為4個部分,每一部分存儲的是該色的亮度值。如圖4.1所示。  閱讀全文

posted @ 2008-03-16 10:28 lovedday 閱讀(3399) | 評論 (1)  編輯

Direct3D中的繪制
     摘要: 頂點和索引緩存有相似的接口并且共享相似的方法;因此我們把它們合在一起講解。一個頂點緩存是一塊連續的存儲了頂點數據的內存。同樣的,一個索引緩存是一塊連續的存儲了索引數據的內存。我們使用頂點和索引緩存保存我們的數據是因為它們能被放置在顯存中。渲染顯存中的數據要比渲染系統內存中的數據快的多。  閱讀全文

posted @ 2008-03-14 18:54 lovedday 閱讀(1294) | 評論 (0)  編輯

繪制流水線
     摘要: 這次主題是渲染管線。它是用來創建為3D世界進行幾何描述的2D圖形并設定一個虛擬照相機確定這個世界中哪一部分將被透視投影到屏幕上。  閱讀全文

posted @ 2008-03-14 09:44 lovedday 閱讀(1313) | 評論 (0)  編輯

初始化Direct3D
     摘要: Direct3D是一種低層圖形API,它能讓我們利用3D硬件加速來渲染3D世界。我們可以把Direct3D看作是應用程序和圖形設備之間的中介。例如通知圖形設備清空屏幕,應用程序將調用Direct3D的IDirect3DDevice9::Clear方法。圖1.1顯示了應用程序、 Direct3D和圖形設備之間的關系。
  閱讀全文

posted @ 2008-03-13 13:38 lovedday 閱讀(2195) | 評論 (0)  編輯

D3D編程必備的數學知識
     摘要: 幾何學中,我們用有向線段表示向量,如圖1。向量的兩個屬性是他的長度和他的頂點所指的方向。因此,可以用向量來模擬既有大小又有方向的物理模型。例如,以后我們要實現的粒子系統。我們用向量來模擬粒子的速度和加速度。在3D計算機圖形學中我們用向量不僅僅模擬方向。例如我們常常想知道光線的照射方向,以及在3D世界中的攝象機。向量為在3維空間中表示方向的提供了方便。  閱讀全文

posted @ 2008-03-12 14:05 lovedday 閱讀(2126) | 評論 (0)  編輯

使用DirectPlay進行網絡互聯
     摘要: 網絡是指多臺計算機互聯以進行數據傳輸及通信的系統。除了兩個或更多的計算機之外,網路還需要有網絡互聯軟件(或一個網路操作系統)、網絡適配器以及電纜。網絡適配器有各種形狀和大小,但是一般都采用調制解調器的形狀。實際上,調制解調器就是一個網路適配器,它能夠將一臺計算機通過世界上最大的網絡-- -互聯網連接到數百萬臺計算機上。

網絡互聯模型有三種基本類型:服務器端、客戶端以及點對點。   閱讀全文

posted @ 2007-10-11 14:50 lovedday 閱讀(882) | 評論 (0)  編輯

【ZT】DirectX簡介
     摘要: DirectX是由微軟公司建立的游戲編程接口。由C++編程語言實現,遵循COM。在Windows的平臺上影響力超越OpenGL并被多數PC 游戲開發商采用。最新版本DirectX9.0c (2006年12月13日)。另外,Windows Vista第5238版亦包含有 DirectX 10 的 Beta 版。

很多Windows游戲需要DirectX。DirectX包含DirectGraphic、DirectPlay、 DirectSound、DirectInput、DirectSetup等部份。 (Direct3D與DirectDraw已整合成DirectGraphic,而DirectShow亦已自原本的DirectX SDK中移到Windows平臺SDK了。 Redist Package 是媒體開發底層API,通過它可以開發游戲和其它媒體應用程序。  閱讀全文

posted @ 2007-10-07 13:27 lovedday 閱讀(1377) | 評論 (0)  編輯

用DirectX Audio和DirectShow播放聲音和音樂
     摘要: 音樂就是一系列的音符,這些音符在不同的時間用不同的幅度被播放或者停止。有非常多的指令被用來播放音樂,但是這些指令的操作基本相同,都在使用各種各樣不同的音符。在計算機上進行作曲,實際上是存儲了很多組音樂,回放時由音頻硬件將這些音符播放出來。  閱讀全文

posted @ 2007-09-24 23:38 lovedday 閱讀(3808) | 評論 (0)  編輯

使用DirectInput進行交互
     摘要: DirectInput是一些COM對象的集合(和所有DirectX組件相同),這些COM對象描繪了輸入系統和各個輸入設備。最主要的對象是DirectInput8,它用于初始化系統以及創建輸入設備  閱讀全文

posted @ 2007-09-20 02:19 lovedday 閱讀(1130) | 評論 (0)  編輯

XFile網格的應用
     摘要: 三維物體表面的各個剖分三角形構成了一個所謂的網格(Mesh),使用3D建模軟件繪制三維圖象,可取得網格的頂點坐標,頂點紋理坐標以及三角形面的材質等數據,并可將這些數據保存到相應的三維圖象文件中。此時調用DirectX提供的網格接口函數,讀取三維圖象文件的頂點數據,就可對三維物體表面進行渲染處理。  閱讀全文

posted @ 2007-09-20 02:13 lovedday 閱讀(930) | 評論 (0)  編輯

D3D中的Alpha顏色混合
     摘要: 渲染管道流水線通常需要將來自頂點的顏色,紋理像素的顏色,光照顏色以及物體表面材質反射光顏色進行混合,生成計算機屏幕的像素顏色。將多種顏色混合在一起,必須考慮各種顏色的成分比例,這個比例由Alpha因子決定。對于游戲開發來說,利用Alpha顏色混合可產生背景透明的渲染效果。   閱讀全文

posted @ 2007-09-20 02:02 lovedday 閱讀(1943) | 評論 (0)  編輯

D3D中的紋理貼圖
     摘要: 紋理是指物體表面本身所具有的圖案,可采用貼圖的方法將一張二維圖象張貼到一個三維物體的表面,這就是所謂的紋理貼圖技術。與材質一樣,紋理也是物體表面的一種屬性,同時結合材質,光照和紋理技術可對三維場景進行渲染,使渲染出來的三維圖形更為逼真。   閱讀全文

posted @ 2007-09-20 01:21 lovedday 閱讀(2669) | 評論 (0)  編輯

D3D中網格模型的運用
     摘要: 在最底層的層次中,Direct3D并不使用網格模型,而只是使用多邊形。D3DX增強了Direct3D系統的功能性,添加了一系列負責處理網格模型的容器和進行渲染的對象。.X文件是微軟公司所開發的,高度通用的三維模型存儲格式。它是模板驅動并完全可擴展,這就意味著可以使用它來滿足文件存儲的所有需求。一個.X文件,正如它的文件擴展名所表明的,是非常通用的。它可以是基于文本的,以便更容易進行編輯;或者是基于二進制的,這樣可以使文件更小,并且更容易地進行保護以便不被窺視。整個.X文件格式是基于模板的,非常類似于C語言結構。

為了讀取并處理一個.X文件,可以利用COM對象的一個小集合來解析從頭到尾在.X文件中所遇到的每個數據對象。將數據對象作為一個字節的數組進行處理;僅僅是將數組轉換為一種可使用的結構,以便能夠容易地訪問到包含在對象里的數據。  閱讀全文

posted @ 2007-07-22 23:27 lovedday 閱讀(4997) | 評論 (2)  編輯

D3D中的Z緩存使用示例
     摘要: 在渲染多邊形網格對象到場景中的時候,離觀察者越遠的對象應該越模糊,同時離觀察者越近的物體應該越清楚,這就是深度排序(depth sorting)。深度排序有兩種常用的方法。

第一種方法稱為畫家算法(painter's algorithm)。這種方法將對象劃分成不同的多邊形,由后往前對這些多邊形進行排序,再按照排好的順序繪制出這些多邊形。采用這種方法繪制多邊形,能夠確保前面的多邊形總是在其后多邊形之前進行繪制。

深度排序的第二種方法稱為z緩沖方法(z-buffer),它是圖形硬件設備使用最多的方法。這種方法依賴于像素,每個像素都有一個z值(z值是像素距離觀察者的距離)。當每個像素被寫入時,渲染器首先檢查是否已經存在一個z值更小的像素,如果不存在,這個像素就被繪制出來;如果存在,就跳過該像素。  閱讀全文

posted @ 2007-07-04 20:53 lovedday 閱讀(1473) | 評論 (0)  編輯

D3D中粒子效果實現示例
     摘要: 大爆炸,煙霧痕跡甚至魔術飛彈尾部發出的微小火花,都是粒子(particle)所制造出來的特殊效果。在適當的時機,啟用alpha混合并繪制粒子,這樣粒子就能朝向觀察點(使用公告板),得到的結果就是混合對象的抽象拼貼,他們可以用于創建一些奇妙的效果。

粒子奇妙的地方就在于粒子的大小實際上是任意的,原因在于可以創建一個縮放矩陣,使其同粒子多邊形的世界變換矩陣結合起來。也就是說,除非粒子紋理不同,否則只需要使用一個多邊形來繪制所有的粒子,無論如何,多邊形的數目都必須同紋理的數目保持一致。  閱讀全文

posted @ 2007-07-04 14:52 lovedday 閱讀(1914) | 評論 (0)  編輯

D3D中公告板的使用示例
     摘要: 公告板(billboard)是一種允許在2D對象出現在3D中的很酷的技術,公告板的原理就是通過使用世界矩陣,根據觀察點來排列多邊形,因為觀察的角度已知(或能夠獲得一個觀察變換矩陣),就只需要使用相反的觀察角來構造矩陣。創建公告板世界矩陣的方法是從Direct3D獲取當前的觀察矩陣并將此矩陣轉置。這個轉置矩陣會將所有的東西進行恰當的定位,以朝向觀察點。接著就只需應用網格的平移矩陣,在世界中正確地確定網格的位置。  閱讀全文

posted @ 2007-07-03 22:37 lovedday 閱讀(2912) | 評論 (0)  編輯

D3D中的字體繪制示例
     摘要: 字體的繪制需要使用ID3DXFont對象和 D3DXCreateFontIndirect函數。

DirectX SDK文檔對ID3DXFont做了簡要的說明:

The ID3DXFont interface encapsulates the textures and resources needed to render a specific font on a specific device.

The ID3DXFont interface is obtained by calling D3DXCreateFont or D3DXCreateFontIndirect.  閱讀全文

posted @ 2007-07-03 19:33 lovedday 閱讀(3416) | 評論 (1)  編輯

光照示例
     摘要: 在設置可變頂點格式時加入法線和漫反色,如下所示:

// The 3D vertex format and descriptor
typedef struct
{
float x, y, z; // 3D coordinates
float nx, ny, nz; // normals
D3DCOLOR diffuse; // color
} VERTEX;

#define VERTEX_FVF (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE)  閱讀全文

posted @ 2007-07-03 01:10 lovedday 閱讀(279) | 評論 (0)  編輯

ALPHA混合示例
     摘要: 設置可變頂點格式時增加一個D3DCOLOR類型的漫反射分量,其中的alpha值指定了alpha混合因子。

// The 2D vertex format and descriptor
typedef struct
{
float x, y, z; // 2D coordinates
float rhw; // rhw
D3DCOLOR diffuse; // diffuse color component
} VERTEX;  閱讀全文

posted @ 2007-07-02 22:56 lovedday 閱讀(455) | 評論 (0)  編輯

D3D中用3D方法繪制2D圖象的例子
     摘要: 思路與"一個用D3D繪制2D圖形的例子"相差不多,主要的區別在頂點的數據結構定義不一樣。

2D的VERTEX結構定義為:

// The 2D vertex format and descriptor
typedef struct
{
float x, y, z; // 2D coordinates
float rhw; // rhw
float u, v; // texture coordinates
} VERTEX;

#define VERTEX_FVF (D3DFVF_XYZRHW | D3DFVF_TEX1)  閱讀全文

posted @ 2007-07-02 19:50 lovedday 閱讀(2432) | 評論 (0)  編輯

一個用D3D繪制2D圖形的例子
     摘要: 思路如下:

(1)函數Do_Init初始化D3D,D3D設備,頂點緩沖,紋理;主要調用這幾個函數:
Direct3DCreate9,GetAdapterDisplayMode,CreateDevice,CreateVertexBuffer, Lock,Unlock,D3DXCreateTextureFromFile。

(2)函數Do_Frame繪制一幀,主要調用這幾個函數:
Clear,BeginScene,EndScene,SetStreamSource,SetFVF,SetTexture, DrawPrimitive。

(3)函數Do_Shutdown釋放D3D資源。  閱讀全文

posted @ 2007-07-01 23:06 lovedday 閱讀(4546) | 評論 (0)  編輯

【ZT】D3D中的骨骼動畫
     摘要: 相信這里沒有人沒玩過采用骨骼動畫技術的游戲,看看那些熱門的動作游戲,例如《波斯王子》、《分裂細胞》和《戰神》,你就知道骨骼動畫的威力了(我承認是猜的)。骨骼動畫技術用來使我們的3D模型在屏幕上動起來,通過和動作捕捉技術結合,可以讓模型做出非常逼真的動作。而這樣一個極具威力的技術,其原理卻相當簡單。

假設我們要讓游戲主角做出一個動作,例如波斯王子拿彎刀往前一劈。最簡單的方法,就是讓模型師建一個動畫序列,然后在程序中逐幀播放,就像放電影一樣。不過這樣一來工作量就太大了,玩家也需要N個G的硬盤來安裝這個游戲。與此不同,骨骼動畫技術采用了一種很聰明的方式。首先,建模師完成一個標準姿勢的3D模型,通常是雙手沿著肩的方向伸展平放,雙腳打開。所有的后繼動作將由這個基礎動作演變得到。  閱讀全文

posted @ 2007-05-24 00:03 lovedday 閱讀(5213) | 評論 (8)  編輯

運行DxTex.exe碰到的問題

posted @ 2007-05-15 15:49 lovedday 閱讀(1792) | 評論 (0)  編輯

D3D中的材質和光照處理
     摘要: 物體表面光澤是由于表面的反射光刺激人的眼睛視網膜而引起的一種視官感覺,這種色覺實際上是由光的波長決定的。每種波長的光在光譜中占據一定的位置,具有特定的色澤和亮度。

對于任意波長為s的光,由于s可分解為s = aR + bG + cB,其中R,G,B為紅色光,綠色光和藍色光的波長,于是在RGB為基底的情況下,光波長由三元數(a, b, c)來決定。因此光的顏色值量化可以這樣來進行:首先用顏色值(1, 0, 0)表示紅色R,用顏色值(0, 1, 0)表示綠色G,用(0, 0, 1)表示藍色B,而任意波長的光的顏色值C則可用(r, g, b)表示,以表明顏色s = aR + bG + cB 是用RGB三色通過混色而得來的,其中r, g和b取區間的浮點數。  閱讀全文

posted @ 2007-05-12 23:28 lovedday 閱讀(2996) | 評論 (0)  編輯

【ZT】D3D中簡單的截圖方法

posted @ 2007-05-11 21:36 lovedday 閱讀(2879) | 評論 (0)  編輯

D3D中基本立體面的繪制
     摘要: 在世界空間中,面向攝影機的三維物體的剖分三角形面為前面,是可視的;背向攝影機的三角形面稱為背面,是不可視的。對于可視的前面進行渲染顯示,對于不可視的背面則不進行渲染處理,這就是所謂的背面剔除。

為了省去繁雜的前面和背面的計算判斷,DirectX將依據寫入頂點緩沖區的三角形面3個頂點的順(逆)時針方向來定義該面為前面或背面,以直接規定三角形面是否顯示。在DirectX的默認情形下,如果寫入頂點緩沖區的三角形面的3個頂點為順時針方向,那么這3個頂點構成的三角形面被認為是前面,必須進行渲染顯示。相反,如果3個頂點的順序為反時針,則為背面三角形,不需要渲染處理。  閱讀全文

posted @ 2007-05-11 17:02 lovedday 閱讀(4668) | 評論 (0)  編輯

D3D中基本三角形面的繪制
     摘要: DirectX Graphics提供的編程接口包括Direct3D組件和D3DX擴展組件,利用DirectX Graphics可以一致地處理二維和三維的圖形渲染,而不再需要應用早期DirectX版本下的DirectDraw組件進行二維圖形的顯示處理。

首先來看看三維物體的成像過程。三維物體可通過建模的微分方法,把彎曲的表面切分為一個個的三角形面,這樣三維物體表面的繪制,就轉化為物體表面中所有三角形面的繪制。要渲染由眾多三維物體組成的三維場景,需要先引入局部坐標系,為場景中的各個三維物體進行三角形頂點的坐標量化。  閱讀全文

posted @ 2007-05-09 18:36 lovedday 閱讀(6846) | 評論 (0)  編輯

游戲中時間的封裝
     摘要: 時鐘類GE_TIMER可用來取得游戲已進行的時間,計算出兩個時間點之間的時間片大小,從而可在某一時間點處,自動更新某些游戲狀態。此外,還可用來獲取程序的幀頻FSP(Frame Per Second)大小,檢驗3D渲染的速度,即游戲速度。  閱讀全文

posted @ 2007-05-07 21:33 lovedday 閱讀(927) | 評論 (0)  編輯

主窗口和DirectInput的封裝
     摘要: 注:GE是GameEngine的縮寫。

GE_APP類解決應用程序的窗口創建問題,為了突出消息處理,這個類并沒有更抽象地將窗口程序地消息循環體代碼進行封裝。因此,這里的應用程序架構是創建窗口(包括注冊窗口類,創建窗口,顯示窗口,設置窗口回調函數的默認處理),然后繼續使用消息循環體,讀取鍵盤和鼠標的輸入等,進行一幀的渲染或其他處理。  閱讀全文

posted @ 2007-05-07 01:42 lovedday 閱讀(1656) | 評論 (0)  編輯

【ZT】DirectInput 鼠標編程入門
     摘要: 前回同大家簡單介紹了如何用 DirectInput 來進行鍵盤編程,本回所要講述的就該是關于如何使用 DirectInput 來對另一個非常重要的輸入設備----鼠標的編程問題。

  鼠標的編程同鍵盤編程的過程是非常相似的,有了上次的基礎,你很快就能看出兩者在形式上其實完全是大同小異的。  閱讀全文

posted @ 2007-05-06 19:34 lovedday 閱讀(717) | 評論 (0)  編輯

【ZT】DirectInput里的鍵盤鼠標的應用
     摘要: 設計一個PC游戲,鍵盤鼠標的輸入是絕不能少。Windows也提供了諸如 WM_LBUTTONDOWN、WM_RBUTTONUP等鼠標消息以及WM_KEYDOWN、WM_KEYUP等鍵盤輸入消息。但是 DirectInput中仍然提供了對鼠標鍵盤的支持,其原因就是DirectInput提供一個更直接更快捷的對輸入設備的訪問方法。就象我們在DOS 下直接接管鍵盤中斷,而不是去用什么討厭的INT16來處理鍵盤輸入一樣。  閱讀全文

posted @ 2007-05-06 17:17 lovedday 閱讀(646) | 評論 (0)  編輯

【ZT】DirectInput 鍵盤編程入門
     摘要: 游戲編程可不僅僅是圖形程序的開發工作,實際上包含了許多方面,本文所要講述的就是關于如何使用 DirectInput 來對鍵盤編程的問題。

在 DOS 時代,我們一般都習慣于接管鍵盤中斷來加入自己的處理代碼。但這一套生存方式在萬惡的 Windows 社會下是行不通的,我們只能靠領 API 或者 DirectInput 的救濟金過活。

在 Windows 的 API 中,有一個 GetAsyncKeyState() 的函數可以返回一個指定鍵的當前狀態是按下還是松開。這個函數還能返回該指定鍵在上次調用 GetAsyncKeyState() 函數以后,是否被按下過。雖然這個函數聽上去很不錯,但現在領這種救濟金的程序員是越來越少了。原因無它,只因為 DirectInput 的救濟金比這豐厚,而且看上去似乎更專業?  閱讀全文

posted @ 2007-05-06 16:30 lovedday 閱讀(466) | 評論 (0)  編輯

DirectInput8初探 - 鍵盤篇
     摘要: DirectInput是Directx的一個組件接口,提供了大量的接口函數處理用戶在鍵盤,鼠標,游戲桿以及力反饋等游戲裝置上的輸入,而且 DirectInput是直接與硬件驅動程序打交道,因此DirectInput可較快的處理用戶的輸入。另一方面,正是由于DirectInput直接與驅動程序進行通信,所以在控制面板上所作的任何鍵盤和鼠標的屬性設置(如鍵盤按鍵的延遲重復率和鼠標的左右手習慣等),都不會對應用 DirectInput的程序起作用,除非是修改由驅動程序提供的屬性設置。  閱讀全文

posted @ 2007-05-05 01:33 lovedday 閱讀(5854) | 評論 (0)  編輯

DirectX 9的坐標系統變換
     摘要: 攝影坐標系的原點為世界坐標系中的觀察位置eye點,z軸與觀察方向(從eye點出發到at點的向量)一致。
由于僅由一個坐標原點的位置和一個z坐標軸的方向不足以完全確定一個坐標系,因此,還需要指定一個up向量來定位攝影坐標系的y軸方向。這個在世界坐標系中給出的up向量是不必與觀察方向垂直的,只是指明攝影坐標系應該以向上的方向還是以向下的方向作為y軸。  閱讀全文

posted @ 2007-05-04 02:09 lovedday 閱讀(3741) | 評論 (0)  編輯

DirectX 9的一些數學計算函數:平面
     摘要: 將三維物體表面剖分為一系列的三角形面,物體的光照亮度處理就轉化為對這些平面三角形的照明處理,從而可簡單地通過平面三角形的法向量與光的入射方向的夾角,來確定各種入射光對平面上每一點說貢獻的亮度值。

對于三角形3個頂點p0,p1,p2構成的平面,選取一個垂直于該平面的法向量n。假設點p為平面上的任意一點,由于n . (p - p0) = 0,從而n . p - n . p0 = 0,由此展開向量的點積運算可知,平面程序具有如下的一般形式:ax+by+cz+d=0。如果要具體求出平面的方程,可取n=(p1-p0) x (p2 - p0)計算出來。  閱讀全文

posted @ 2007-05-04 01:18 lovedday 閱讀(1936) | 評論 (1)  編輯

【ZT】Direct3D幾何流水線
     摘要: 大家都知道,一個3D 場景中,我們見到的任何光輝燦爛的物體,都是由一個一個面片組成的。而裝載面片位置信息的就是其各個定點的三維坐標。這是用來在模型中存儲的,而要把物體顯示在屏幕上,還需要將它們轉換成顯示器上的二維坐標。這就需要對每個點實施一套 3 to 2 的轉換公式,在Direct3D中叫做“幾何流水線”(Geometry Pipeline)。  閱讀全文

posted @ 2007-05-03 23:20 lovedday 閱讀(1201) | 評論 (1)  編輯

DirectX 9的一些數學計算函數:矩陣,坐標變換。
     摘要: 向量的運算已超了傳統意義上的數的運算,因為向量并不是一般的數字。這意味著一切可用符號表示出來的事物,都可以對其進行各種關系運算,而不必關心事物的本身。這種符號運算的觀點,推動了近代數學對一般的集合元素進行的抽象代數方面的研究。

在線性方程組的求解上,變元較少的方程組(如僅有兩個未知數x和y的方程組)的解很容易表達出來,但是推廣到較為復雜的更多變元的情形,如何推測方程組的解以及如何用確定的式子表達出來,引發了對行列式的提出和研究。行列式實質上是方陣數據的一種運算,由此自然地想到,可對一般行列數據定義代數運算,就像對向量定義運算一樣,這就是矩陣運算的產生歷史。  閱讀全文

posted @ 2007-04-27 20:04 lovedday 閱讀(2389) | 評論 (0)  編輯

DirectX 9的一些數學計算函數:向量篇
     摘要: 首先來看看向量,向量的坐標表示對于DirectX游戲開發來說是必須的,在世界坐標系或投影坐標系下的三角形面的法線,光線的方向和觀察者的方向等都是通過向量的坐標形式來準確給出的。

DirectX的頭文件D3DX9Math.h給出了兩個結構體來支持向量的計算:  閱讀全文

posted @ 2007-04-27 18:53 lovedday 閱讀(1796) | 評論 (0)  編輯

找不到d3dx9_25.dll
     摘要: 今天在學習DirectX 9 SDK的時候,碰到了一個問題,提示我:

This application has failed to start because d3dx9_25.dll was not found.

上網查了下,找到了原因,英文就不翻譯了,再也找不到英文比我還爛的人了 ^_^  閱讀全文

posted @ 2007-04-26 13:01 lovedday 閱讀(3860) | 評論 (2)  編輯

公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美美女| 欧美日韩一区二区精品| 欧美高清视频| 久久久久久久久久久久久9999| 亚洲一卡二卡三卡四卡五卡| 一本色道久久综合亚洲精品不卡| 99精品国产一区二区青青牛奶 | 欧美成人精品h版在线观看| 久久综合一区二区| 蜜桃av综合| 国产精品成av人在线视午夜片| 欧美三区在线视频| 国产在线精品二区| 91久久黄色| 亚洲午夜精品久久久久久app| 亚洲综合精品一区二区| 欧美专区日韩专区| 免费观看日韩av| 99亚洲一区二区| 亚洲综合国产| 久久在线播放| 国产精品欧美久久| 亚洲第一中文字幕| 中日韩高清电影网| 久久久久久久成人| 日韩视频一区二区在线观看 | 99国产麻豆精品| 性欧美大战久久久久久久久| 美女被久久久| 国产精品男女猛烈高潮激情| 1769国内精品视频在线播放| 亚洲综合国产激情另类一区| 欧美大片一区二区| 亚洲欧美日韩另类| 欧美精品啪啪| 一区二区三区自拍| 亚洲综合日本| 最新国产乱人伦偷精品免费网站| 亚洲黄色影院| 久久另类ts人妖一区二区| 欧美性猛交xxxx乱大交蜜桃| 亚洲第一福利在线观看| 亚洲欧美精品| 亚洲免费精彩视频| 美女图片一区二区| 国产精品久久久久久久久久久久 | 亚洲专区一区二区三区| 久久久久国内| 亚洲视频视频在线| 欧美www在线| 欧美一区二区三区免费大片| 国产精品高潮在线| 亚洲人午夜精品| 媚黑女一区二区| 久久精品99无色码中文字幕 | 在线观看不卡av| 久久av一区二区三区| 中文欧美字幕免费| 欧美日韩国产页| 一区二区三区产品免费精品久久75 | 亚洲在线一区二区三区| 亚洲精品美女在线观看播放| 欧美chengren| 亚洲精品视频在线播放| 亚洲福利小视频| 欧美chengren| 中文国产成人精品| 一区二区三区国产在线| 欧美三级日本三级少妇99| 一本大道久久a久久精二百| 亚洲破处大片| 欧美三级中文字幕在线观看| 日韩视频免费看| 亚洲精品美女久久久久| 欧美午夜理伦三级在线观看| 亚洲欧美日韩精品久久| 久久国产精品高清| 久久成人在线| 亚洲韩国精品一区| 亚洲人成在线播放| 欧美色道久久88综合亚洲精品| 亚洲自拍偷拍一区| 午夜精品久久久久久久久久久久| 国产真实久久| 欧美激情精品久久久六区热门 | 亚洲人成毛片在线播放女女| 欧美激情一二区| 亚洲香蕉伊综合在人在线视看| 亚洲视频二区| 精品二区视频| 亚洲精品久久久久久久久久久久| 欧美三级视频在线播放| 久久精品国产在热久久 | 农夫在线精品视频免费观看| 欧美精品一区二区三区蜜臀| 国产精品一区二区视频| 久久精品理论片| 欧美多人爱爱视频网站| 欧美一区二区三区免费看 | 亚洲精品乱码久久久久久久久| 日韩网站在线| 精品成人一区二区三区| 一本色道88久久加勒比精品 | 久久久噜噜噜久久| 免费一级欧美在线大片| 亚洲欧美韩国| 欧美精品激情在线| 久久久久国产一区二区三区| 欧美视频在线观看免费| 欧美国产亚洲精品久久久8v| 国产欧美日韩精品专区| 99re6这里只有精品视频在线观看| 一区二区在线观看视频| 亚洲欧美日韩国产综合在线| 一区二区三区日韩在线观看 | 国产一区二区高清视频| 亚洲另类黄色| 亚洲激情成人在线| 久久精品国产久精国产思思| 亚洲欧美精品一区| 欧美日韩国产一中文字不卡 | 欧美在线3区| 欧美日一区二区三区在线观看国产免| 美女图片一区二区| 激情五月婷婷综合| 欧美亚洲视频在线观看| 亚洲欧美99| 欧美午夜精品理论片a级大开眼界| 亚洲国产精品悠悠久久琪琪| 一区二区视频免费完整版观看| 午夜精品免费| 久久成人综合视频| 国产伦精品免费视频 | 欧美在线观看日本一区| 亚洲欧美激情视频在线观看一区二区三区| 美日韩免费视频| 亚洲第一中文字幕在线观看| 亚洲高清久久久| 免费视频一区二区三区在线观看| 欧美成人久久| 亚洲国产精品99久久久久久久久| 久久久久久久激情视频| 麻豆久久婷婷| 亚洲国产精品一区二区第一页| 久久躁日日躁aaaaxxxx| 欧美成人午夜77777| 亚洲精品看片| 欧美日一区二区三区在线观看国产免| 一区二区三区产品免费精品久久75 | 欧美激情一区二区三区蜜桃视频| 蜜臀久久99精品久久久久久9| 伊人久久亚洲美女图片| 米奇777在线欧美播放| 亚洲国产日韩在线一区模特| 日韩视频免费观看| 国产精品国产三级欧美二区| 亚洲免费一级电影| 久久久久久久综合色一本| 狠狠色丁香婷婷综合| 欧美www视频| 日韩一区二区免费高清| 久久av一区二区| 亚洲精品美女久久7777777| 欧美日韩精品一区视频| 亚洲欧美日韩另类精品一区二区三区| 久久久久.com| 99精品视频免费观看| 国产精品一区2区| 麻豆91精品| 亚洲图色在线| 亚洲第一福利社区| 午夜亚洲影视| 亚洲日本中文| 国产丝袜一区二区| 欧美另类极品videosbest最新版本 | 亚洲成人资源网| 欧美午夜无遮挡| 久久婷婷一区| 亚洲在线观看视频网站| 欧美aⅴ99久久黑人专区| 亚洲天堂网站在线观看视频| 国内精品久久久久影院优| 欧美精品1区| 香蕉久久一区二区不卡无毒影院 | 国产一区91| 欧美日韩亚洲综合一区| 久久九九久久九九| 一区二区三区www| 欧美大片在线看免费观看| 欧美亚洲一区二区三区| 日韩一区二区精品| 一区福利视频| 国内精品免费在线观看| 国产精品成人观看视频国产奇米| 久久综合给合久久狠狠色| 欧美专区在线| 欧美一级电影久久| 亚洲女同在线| 亚洲在线不卡| 亚洲一区在线直播|