原创 壓縮紋理相關

壓縮紋理相關       紋理在光柵化階段被映射到模型上,在這個過程中會消耗掉大量的系統總線和內存。爲了減少紋理佔用的內存的數量,d3d支持紋理壓縮技術。一些設備與生俱來擁有紋理壓縮支持。在這些設備上,可以創建壓縮表面並加載數據到該表面上

原创 空間劃分及可見性算法【一】

最簡單的流水線可見性處理如下: 對每個物體轉換到世界座標,然後進行視椎體剔除,其次是背面消隱,最總通過空間剪裁和光柵化期間的圖像空間裁剪得到最終的要繪製的圖像。 在場景很簡單,物體很少的情況,上述方法是可行的。但考慮到現代遊戲的場景複雜程

原创 空間劃分及可見性算法【二】

先來複習一下背面消隱:       前提爲左手座標系,每個三角形都會以一定順序存儲三個頂點,按照這個順序觀察三角形,如果是順時針方向則該面爲三角形的正面,另一個面爲三角形的背面。有了該假設,我們就可以計算三角形的面法線了,該法線垂直三角形

原创 空間劃分及可見性算法【三】

前面討論的BSP和Portal大多數情況會被用於室內場景的管理,更確切的說是在充滿分割面的場景中。在室外場景管理中一般會用到BHV(包圍體層次結構)或八叉樹(num_division = 2的一種特殊的BHV)。   關於如何創建BHV及

原创 fxc的使用及shader調試技巧

如果當前使用的版本是dx10的fxc,則當前fxc不支持ps_1_x的shader,在編譯該類shader時需加上/Gec,fxc會自動的把ps_1_x版本的shader編譯成ps_2_x的版本。當然該shader只能在支持shader2

原创 d3d資源管理

資源鎖定意味着能通過CPU來訪問該資源。鎖定選項有以下幾種: D3DLOCK_DISCARD, D3DLOCK_READONLY, and D3DLOCK_NOOVERWRITE 等,但是隻有這三種是經常使用的。運行時並不會 檢查應用程序

原创 爲DrawPrimitiveUP(DrawUserPrimitive)洗冤

  最初只因DXSDK文檔裏說了句推薦用Vertex Buffer而不要用DrawPrimitiveUP(C#裏叫DrawUserPrimitive),DrawPrimitiveUP很快被描繪成傳說中的瘟疫,人人都在警告不要接近它。估計有

原创 快捷鍵 可以提高很多開發效率的呦

 Shift+Alt+Enter: 切換全屏編輯       Ctrl+B,T / Ctrl+K,K: 切換書籤開關   Ctrl+B,N / Ctrl+K,N: 移動到下一書籤   Ctrl+B,P: 移動到上一書籤   Ctrl+B,

原创 自動紋理管理

d3d中的自動紋理管理      紋理管理是在給定的時間確定哪些紋理需要渲染並保證那些紋理被加載到顯存的過程。紋理管理算法可能非常複雜,但是它基本上都會包含下面三個主要步驟: 1. 跟蹤可以獲取到的顯存的總量; 2.計算哪些紋理是渲染所必

原创 馬的遍歷問題

最近在複習一些數據結構和經典算法 在寫馬的遍歷問題時遇到了死循環,不知道問題出在哪裏,下面是代碼,請高手指點 //馬的遍歷bool travelCells(int x,int y,vector<vector<int>>& cellsVV,

原创 壓縮紋理(續)

前面詳細介紹了壓縮紋理dds的各種格式DXT1~DXT5,下面來詳細介紹一下怎麼具體使用壓縮紋理。   【一】怎麼創建dds文件: 1、photoshop插件導出的方式,通過把dds.8bi拷貝到插件格式目錄中即可。 2、directx

原创 d3d設備基礎

1.d3d 設備創建時,類型主要有兩種,HAL(硬件抽象層)和REF(引用設備),前者基於硬件支持,速度會很快,但是不一定支持所有的d3d特徵,後者,雖然沒有硬件加速,速度很慢,但是能支持所有的 d3d特徵,一般情況下使用HAL,在出問題

原创 着色模式

在把OPenGL改成D3D之後,使用菱格編輯器時發現,整個菱格在X軸方向偏移了一個單位,百思不得其解,後來發現跟着色模式有關。 菱格繪製是線框模式,着色模式採用固定着色,以trangleList繪製,在OpenGL中,如果以trangle

原创 紋理過濾

紋理過濾   Microsoft® Direct3D®在渲染圖元時,要把三維圖元映射到二維屏幕上。如果圖元貼有紋理,那麼Direct3D必須用該紋理給圖元在二維屏幕上對應的每個像素產生一個顏色。對於每個像素,Direct3D必須從紋理

原创 Torque智能指針及臨時內存

在遊戲的每一幀中都可能會分別和釋放一些內存,如果不特殊處理則這種頻繁的內存分配和釋放會影響遊戲性能。在Troque中採用了臨時內存的方式解決了這個問題。基本原理就是,在遊戲初始化時分配#define TORQUE_FRAME_SIZE