靈活頂點格式
㈠ direct3d 頂點結構這個誰給解釋下
構造函數吧,前面的是預設構造函數
㈡ 急!!畢業設計:directx在網路游戲中的應用
現在游戲的種類與數量幾乎呈爆炸式增長,游戲的製作水平也不斷提高,那麼玩家在欣賞游戲中那絢麗的效果時,有沒有想過是什麼造就了這一切呢?這就是DirectX!DirectX這個詞對玩家來說似乎並不陌生,現在的很多游戲說明裡都有「該游戲需要DirectX….以上版本支持」此類的話,甚至3DS Max啟動時的加速模式選項中也有DirectX身影。那麼DirectX究竟是什麼呢?現在就讓我們揭開它面上這層神秘的面紗,一探究竟吧。
一、初識DirectX
DirectX是Microsoft開發的基於Windows平台的一組API,它是為高速的實時動畫渲染、互動式音樂和環境音效等高要求應用開發服務的。從Windows 95開始,人們就開始接觸DirectX2.0,WindowsNT4.0裡面則是DirectX3.0a,但是沒有DirectX4的版本。到了Windows98,它就是Windows家族操作系統中不可缺少的核心成員之一。Windows 98中集成了DirectX5,Windows2000中集成了DirectX 6,Windows Me中集成了DirectX 7,而Windows XP天生就帶了DirectX 8.1。
微軟開發了DirectX標准平台,並且根據硬體製造廠商和游戲廠商合作共同更新升級DirectX的標准。硬體製造商按照此標准研發製造更好的產品,游戲開發者根據這套標准開發游戲。也就是說,無論硬體是否支持某種特效,只要DirectX標准中有,游戲開發者就可以把它寫到游戲中,當這個游戲在硬體上運行,如果此硬體根據DirectX標准把這個效果做到了此硬體驅動程序中,驅動程序駕馭其硬體算出結果,用戶就可以欣賞到此效果。這就是「硬體設備無關性」,是DirectX真正意義所在。
通常,Windows對硬體訪問的管制非常嚴格,用通常的辦法不易訪問,但DirectX通過「硬體抽象層(HAL)」給予了開發人員直接訪問硬體的能力,HAL不僅解決了硬體及兼容性問題,而且開發人員可以利用它直接訪問計算機的某些硬體設備,例如顯示設備的直接顯存控制和渲染,鍵盤、滑鼠和游戲桿的控制的直接訪問控制,音頻設備的直接音頻混合與輸出能力等等,因此開發人員可以充分利用硬體加速將程序的性能優化到一個新的高度,如果目標機器不支持相應的硬體加速,DirectX還可以模擬加速器以提供強大的多媒體環境。DirectX家族包含的成員有Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectSound和DirectShow。
二、DirectX全家福
通過上面的介紹,相信讀者對DirectX已經有一個大概的了解。下面就讓我們逐一認識它們吧。
1、Direct3D、DirectDraw和DirectGraphics
DirectDraw是DirectX家族中的元老,它為高速的2D渲染提供了良好的支持,由於其具備直接顯存訪問和位快傳送的能力,使得2D圖形的繪制速度相對GDI有了一個質的飛躍,其渲染速度甚至有上百倍的差距。在現在回憶當初玩「紅色警戒」和「Diablo」的時候,大家可不要忘了DirectDraw的功勞。
DirectDraw在DirectX3.0時就已經接近極致,但是隨著PC圖形技術的飛速發展,人們逐漸不再滿足於2D的圖形效果,而通過2D技術實現偽3D模擬又非常損失效率,這種需求直接導致了Direct3D的誕生,早期的Direct3D技術不甚完善,相對於2D技術還有一定的差距,直到圖形加速卡支持硬體3D特效後,Direct3D才逐漸步入正軌,慢慢顯示出它的性能優勢來。下面讓我們來回顧一下歷史,看看
Direct3D的「成長過程」:
DirectX6中的Direct3D添加了如下新特性:
* 幾何形體的靈活頂點格式定義
* 幾何形體的頂點緩沖存儲
* 支持多紋理渲染
* 自動紋理管理
* 可選深度緩沖(使用Z Buffer或W Buffer)
* 通過凹凸環境貼圖(BUMPENVMAP)為反光面和水波特效提供逐像素的渲染和貼圖能力
DirectX7中的Direct3D添加了以下新特性:
* 硬體坐標轉換和燈光(T&L)支持
* 立方體表面的環境貼圖
* 幾何渲染
* 改進的紋理渲染
* 自動紋理坐標生成、紋理轉換、投影紋理和任意麵裁剪
* D3DX實用庫
* 支持Intel MMX架構、Intel單指令多數據流(SIMD)、SSE?和 AMD? 3DNow?架構。
DirectX的版本到了8.0的時候,雖然它依然保持著向前的兼容性,但是它的結構發生了巨大的變化,3D圖形處理技術逐漸統一在Vertex Shader和Pixel Shader。Vertex Shader被用來描述和修飾3D物體的幾何形狀,同時也用來控制光亮和陰影;Pixel Shader則用來操縱物體表面的色彩和外觀。Direct3D和DirectDraw合二為一,DirectX家族誕生了一個新的成員----DirectGraphics。
同時也增添了很多令人激動的特性:
* 完全集成DirectDraw與Direct3D
簡化程序初始化過程並提高數據分配和管理的性能,這將減少內存消耗。同時,集成後的圖形應用編程介面(API)允許並行的頂點輸入流以達到更加靈活的渲染。
* 可編程頂點處理語言
允許你編寫定製的著色器,如變形和漸變動畫,矩陣調色板蒙皮,用戶定義的光照模型,一般環境映射,可編程幾何體或者任何其他開發者定義的演算法。
* 可編程像素處理語言
允許你編寫定製的硬體著色器,例如通用紋理組合公式,逐像素光照(凹凸貼圖),適用於實現照片(真實)級鏡面效果的逐像素環境貼圖或者任何其他開發者定義的演算法。
* 支持多重采樣渲染
允許全場景反走樣和多重采樣效果,例如運動模糊及景深(鏡頭的聚焦效果)。
* 點精靈
允許高性能的粒子系統渲染,例如火花、爆炸、雨、雪等等。
* 3-D空間紋理
允許范圍衰減,實現逐像素級光照及空間大氣效果,甚至是更復雜的幾何圖形應用。
* 支持高維圖元
對來自主要的3-D創作工具的3-D內容,增強其外觀並簡化內容映射。
* 高級技術
包含了用於輸出Direct3D蒙皮網格的三維內容創建工具插件,使用了Direct3D多種不同技術,多解析度層次細節(LOD)幾何,還有高維表面數據。
* 索引頂點混合
擴展了幾何混合的支持,允許通過指定使用一個矩陣索引把矩陣應用於頂點混合處理。
* 擴充了Direct3DX實用庫
包含了大量的新函數。Direct3DX實用庫是一個位於Direct3D之上的輔助層,用於簡化3-D圖形開發者的常規工作。它包括了一個蒙皮庫,支持對網格的操作,還有組裝頂點與像素著色器的功能。
DirectX每一次升級都會有重大的內核結構改變,它會給我們帶來巨大的視覺沖擊。DirectX7核心的T&L引擎到DirectX9乾脆被拋棄了。因此對於圖形晶元開發商、游戲開發商以及廣大用戶而言,DirectX 9的確是一項「絕無僅有的優越圖形技術」。DirectX 9「具有多項令人興奮的全新功能特徵」:
㈢ 本人是一個老程序員,目前想學習3D編程,請問3D方面的基礎知識可以看哪本書不拘泥於編程語言,求經典。
1.計算機圖形學
2.OpenGL寶典
㈣ 靈活點是啥意思啊
靈活頂點格式(FlexibleVertexFormat,FVF)用來描述在頂點緩沖區中的頂點存儲格式中包含了哪些屬性。Direct3D應用程序可以用幾種不同的方式定義靈活頂點格式。靈活頂點格式使應用程序只使用它需要的頂點數據,排除那些它不需要的組成成分。這樣,應用程序可以節省內存空間,減少系統帶寬。通過D3DFVF的組合,可以描述圖元頂點的格式。靈活頂點格式指定的格式包括點的大小,用D3DFVF_PSIZE指定,該大小在投影機空間用來表示未經變換的頂點,在設備空間用來表示經過變換的頂點。
㈤ Direct3D問題--關於頂點靈活格式
因為定點帶有顏色信息。也就是那個D3DFVF_DIFFUSE。當然單純的定點散射值真正的圖形編程里是很少用的。
㈥ C++語言初學DX9繪圖問題(頂點緩沖)
你好,rhw表示轉換後的二維坐標,這和你設置的靈活頂點格式有關。
比如#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
你的頂點結構體就必須有這個值,一般取1.0f就可以,而且是二維坐標,z值也沒有影響。
㈦ fvf 什麼意思
靈活頂點格式
㈧ 怎樣調用SetStreamSource函數
D3D9 中允許一個 Stream 的 VertexBuffer 中可以存在多個不同的數據,比如 Pos\Texcood\Normal
等等,需要注意的是這里的不同數據指的是不同頂點格式的頂點數據,比如一個 VB 中有3部分:0~n-1 存儲了n個
Pos+Normal,n~2n-1 存儲了n個 Texcoord0,2n~3n-1存儲了n個 Texcoord1,在繪制
multi-coord-texture 時就這樣可以使用 OffsetInBytes :
SetStreamSource (0,pVB, 0, sizeof(PosNormal) ); // 設置 Pos+Normal
SetStreamSource (1,pVB, sizeof( PosNormal)*n, sizeof(TexCood) ); // 設置 texcoord0
SetStreamSource (2,pVB, sizeof( TexCood)*n,sizeof(TexCood) ); // 設置 texcoord1
這樣就可以根據游戲情況靈活的進行繪制。
㈨ D3D編程中使用FVF(靈活頂點格式)的原因
暈0分……
給開發者更大的靈活性,可以自己定義頂點結構。後來發展到VertexShader。