摘要: Direct3D提供了對生成的紋理坐標進行坐標變換的功能,與頂點坐標變換相類似,可以指定一個4x4的紋理坐標變換矩陣,把它與生成的紋理坐標相乘,然后將變換之后的紋理坐標輸出至Direct3D渲染流水線。使用紋理坐標變換可以對紋理坐標進行諸如平移、旋轉和縮放等三維變換。紋理坐標變換對于生成一些特殊效果是非常有用的,它不用直接修改頂點的紋理坐標。例如可以通過一個簡單的平移矩陣對紋理坐標進行變換,從而使物體表面上的紋理不斷變換位置,產生動畫效果。紋理坐標自動生成在三維圖形程序中最廣泛的應用是環境映射。
閱讀全文
摘要: 在Direct3D程序中,不僅可以在模型載入階段或渲染階段指定物體的紋理坐標,還可以通過Direct3D渲染引擎自動生成紋理坐標,用于諸如環境映射等特殊的視覺效果。與手動設置紋理坐標相比,紋理坐標自動生成在Direct3D坐標變換和光照流水線中完成,執行速度更快。
Direct3D系統可以使用經過變換的攝像機空間頂點位置坐標、法線信息來生成紋理坐標。如果使用紋理坐標自動生成,那么在頂點中就可以不用包含紋理坐標數據,從而可以降低圖形渲染時的數據傳輸量。紋理坐標自動生成主要用于產生一些特殊效果,在大多數情況下還是手工為每個頂點指定紋理坐標。
閱讀全文
摘要: Direct3D在渲染一個場景時,它可以結合幾種來源的顏色信息:頂點、當前材質、紋理貼圖、先前寫入渲染目標的顏色信息,然后將其中的一些顏色混合起來。同時也可以使用Alpha來指定Direct3D該以怎樣的權重混合這些顏色,Alpha信息可以存儲在頂點中、材質中、紋理貼圖中。Alpha值為 0表示完全透明,Alpha值為1表示不透明,其余0~1之間的值表示不同程度的透明。
閱讀全文
摘要: 發光映射(glowing mapping)與黑暗映射正好相反,它對于模擬那些具有獨立于基礎貼圖的發光部分的物體很有用,比如模擬發光二極管、按鈕、建筑物內的燈光、太空船上的燈光等。發光映射應僅影響基礎貼圖上的發光區域,而不影響其他部分。因此需要對發光效果做加法,而不是做乘法。
如果要模擬一塊粗糙的石灰泥墻壁,可以通過細節映射(detail mapping)來實現。實現過程是:將基礎貼圖(也就是第一張紋理)的顏色未經修改便作為第二個紋理操作階段中的第二個參數,然后通過 D3DTOP_ADDSIGNED將灰色的細節紋理與基礎貼圖相加。這個操作本質上是做了一個加法,只是使用了有符號的顏色值來代替平時使用的無符號值。在對兩張紋理的像素顏色進行D3DTOP_ADDSIGNED操作時,它將參數的每個成分相加后再減去偏移量0.5,從而使有效值域變為-0.5 ~ 0.5。對一些比較舊的顯卡,當其不能支持D3DTOP_ADDSIGNED操作時,可以使用D3DTOP_MODULATE2X代替 D3DTOP_ADDSIGNED操作進行模擬。
閱讀全文
摘要: 可以通過黑暗貼圖三種調制操作的切換來創建一個動畫示例。
當很強的陽光照射在物體表面上時,會使它表面的顏色變得更加明亮,這可以通過將紋理與頂點的漫反射顏色相混合來模擬這種效果。當一個白色材質反射一個方向光時,反射量越多,就意味著紋理顏色在最終顯示結果中所占的成分越少。因此,那些被光直接照射到表面會呈現出白色。
試想,當你站在一間伸手不見五指的房間內,無法看清周圍的任何顏色。于是你打開燈光,突然之間物體的顏色便呈現了出來,就好像是被火焰點燃了一樣。對于這種效果,可以通過黑暗貼圖和頂點漫反射顏色的混合來模擬。
閱讀全文
摘要: 紋理映射本質上就是從紋理中獲取顏色值,然后應用到物體的表面,多層紋理映射本質上就是混合多層紋理的顏色,然后應用到物體表面。為了處理上的方便,Direct3D將顏色的RGB通道和alpha通道分別進行處理,具體的操作方法通過紋理階段狀態進行設置。
設置紋理顏色混合操作的代碼大致如下:
// i表示紋理階段序號
pd3dDevice->SetTextureStageState(i, D3DTSS_COLORARG1, arg1);
pd3dDevice->SetTextureStageState(i, D3DTSS_COLORARG2, arg2);
pd3dDevice->SetTextureStageState(i, D3DTSS_COLOROP, op);
閱讀全文
摘要: 紋理映射在三維圖形程序設計中具有非常重要的作用,三維場景中的許多特殊效果都是通過紋理映射來實現的。例如通過紋理映射模擬復雜的光照效果,物體表面對周圍環境的反射效果等。
Direct3D最多支持8層紋理,也就是說,在一個三維物體的表面可以同時擁有1~8張不同的紋理貼圖。Direct3D能夠在一個渲染過程中把這些紋理顏色依次混合,渲染到同一個物體的表面。每一個紋理層對應0~7的索引序號,多層紋理映射能夠模擬更為真實的三維世界。
閱讀全文
摘要: 一個社會的文明與進步,不僅僅是物質財富的積累,不僅僅是城市中高樓大廈的林立,不僅僅是宇宙飛船的遨游太空,更重要的是人的個體生命價值的體現,更重要的是一個社會中人的生命的平等。
在國殤之時,降下的國旗比高高飄揚時更讓國人敬重。因為國旗為百姓而降,體現了國家與民眾生死與共的立場,反過來,國旗的份量就會在民眾的心中更重。正如有評論者所說,國旗為國民而降,國民得到的是無尚的尊榮,而國家收獲的則是國民對它的認同。
閱讀全文
摘要: DXUT(也稱sample framework)是建立在Direct3D API之上的Direct3D應用程序框架,有了DXUT這樣一個Direct3D程序框架,只需在這個框架的基礎上編寫相應的代碼,從而簡化了 windows和Direct3D API的使用,可以高效地進行Direct3D程序設計。
閱讀全文
摘要: 控件是用戶接口的重要組成部分,為了便于用戶操作,為程序界面添加各種控件是非常好的方法。DXUT框架為在Direct3D程序中添加各種控件提供了支持。為了便于加載控件和處理各控件的消息,通常先在窗口中加載對話框,然后在對話框中添加響應的控件,由對話框來管理控件。為了統一管理各個對話框,還需要定義對話框資源管理器類CDXUTDialogResourceManager的一個對象,在程序開始時,調用各個對話框的Init函數和對話框資源管理對象進行初始化
閱讀全文