原创 Windows 8 Directx 開發學習筆記(十二)利用混合實現浮在水面的木箱

在場景中繪製多個不透明物體時很簡單,哪個物體離得近,看到的就是哪個物體。但如果加入一個透明的物體,像玻璃,如何渲染就有些麻煩。拿一塊紅色的玻璃擋住眼睛,看到的物體都偏紅,換成藍色的玻璃,物體都偏藍。DirectX中的“混合(Blendin

原创 VS 2012 單元測試簡單配置

寫算法時大多依靠簡單輸入驗證,經常遇到小範圍輸入正常,大範圍或特殊情況輸入結果錯誤的問題。所以寫程序之前最好先想好幾個特殊用例來測試,以驗證算法是否正確。單元測試就是個不錯的工具,而VS 2012提供了很方便的單元測試功能。 首先創建需要

原创 Windows 8 DirectX 開發學習筆記(十五)使用Billboard實現樹木貼圖

要使用DirectX來獲得三維效果,一般首先要生成一個三維模型,然後計算它在可視空間中的投影。這樣得到的二維圖像十分真實,但是計算量也很大。在大規模場景渲染中,隨着模型精度的提高,這樣的處理方式十分消耗資源。人眼的分辨率是有限的,對於遠處

原创 Win8 DirectX 開發問題總結(一)

參照Win32下的DirectX 10代碼,實現基於DirectX 11的Windows Store App,雖然是彎路,會遇到一些額外的問題,但是感覺在解決問題的過程中,能對DirectX理解的更深一些。而且這樣做能夠避免自己直接複製

原创 [HTML5]使用Box2dWeb模擬飛行箭矢

Box2d是一個2D遊戲物理引擎,由Erin Catto開發,於2007年發佈。很多2D遊戲都用過Box2d,其中最有名的自然是憤怒的小鳥。Box2d本身是C++編寫,但在不同平臺都有它的衍生版本,像Flash版的Box2dFlash,J

原创 Windows 8 Directx 開發學習筆記(十一)地形紋理貼圖

前一篇實現木箱貼圖時,木箱的六個面都正好用一整張紋理圖,即六個面的紋理座標均在[0,1]內。然而在爲比較大的模型貼圖時,像山峯河谷模型,如果只用一張紋理圖,那麼每個三角形只得到幾個紋理元素,無法爲提供足夠高的分辨率。這時可以在模型表面上平

原创 Windows 8 Directx 開發學習筆記(七)水波紋的實現

使用DirectX實際開發中,模型的形狀不可能都是一成不變,只依靠移動攝像機去實現動畫。這裏用實時更新頂點緩衝的方式生成一個水波模型,最終效果類似向水面扔石子時出現的水波紋。有了上一篇建立好的模型,實現這個效果僅需要更改WaterMode

原创 Windows 8 Directx 開發學習筆記(九)材質定義及混合光照效果實現

在真實環境中,同一個物體在不同光源照射下的顏色並不一樣,因爲物體本身並沒有顏色,而是它會反射不同顏色的光。物體對不同顏色光的吸收率、反射率,加上光澤度、透明度等其他物理屬性組合在一起,定義了這個物體的材質。知道物體的材質,就能夠方便地算出

原创 Windows 8 Directx 開發學習筆記(五)山峯河谷模型的簡單實現

通過之前對DirectX示例程序代碼的研究,基本瞭解DirectX最簡單的工作過程,爲了更好的理解整個過程,基於示例程序做一個山峯河谷的簡單模型。首先還是根據模板創建正方體的示例程序,Visual C++ -〉Windows應用商店 -〉

原创 Windows 8 Directx 開發學習筆記(十三)利用模板實現木箱鏡像

假設牆上有一面鏡子,鏡子前面有個木箱。如果觀察角度合適,整個木箱鏡像都會在鏡子裏,計算起來還比較簡單;而變換個角度,木箱的鏡像可能只有一部分在鏡子裏,這時單純依靠計算來實現就很麻煩。DirectX提供了模板技術以方便地完成這個任務。我印象

原创 Project Euler Problem 27小結

Project Euler上有很多有意思的問題,剛做到第27題,對這個問題做個小結。   Problem 27: Euler有一個著名的方程n^2+n+41,當n=0到39時,方程結果均爲質數。如今人們用電腦計算,發現了另一個方程n^2-

原创 Windows 8 Directx 開發學習筆記(十四)使用幾何着色器實現三角形細分

幾何着色器是從DirectX 10才引入的着色器,是一個可選階段,位於頂點着色器和像素着色器階段之間。頂點着色器以頂點作爲輸入數據,而幾何着色器以完整的圖元作爲輸入數據,像點、直線、三角形等。之所以引進幾何着色器是爲了充分利用GPU的計算

原创 Windows 8 Directx 開發學習筆記(十)紋理貼圖實現旋轉的木箱

紋理貼圖映射(texturemapping)是可以顯著提高場景細節和真實感的一種技術,基本原理是將圖像數據映射到3D三角形表面(之前的文章提到過,三維模型其實是由很多個三角形拼接而成)。當使用紋理資源時,只要將每個3D三角形與紋理資源上的

原创 [HTML5]使用Box2dWeb模擬射箭效果並添加能量槽

上次已實現箭矢的飛行效果,但是箭在碰到牆壁時直接反彈回來,像鋼棍而不是箭。在Box2d中,可以利用關節(Joint)將箭和靶子連接起來,組成一個整體,實現射擊效果。使用關節要在文件開頭添加新的變量,方便後面使用: var b2Joints

原创 Windows 8 Directx 開發學習筆記(六)添加水模型

HillExample已經完成山峯河谷的模型,可惜的是河谷是旱季的河谷,沒有水。這次的目標就在河谷裏注入水。 首先新建HillWaterExample項目,其配置與HillExample項目相同。然後複製HillExample中CubeR