遊戲開發基礎 四

2021-06-02 22:05:54 字數 1324 閱讀 2834

第四章

rgb資料可用兩種不同的結構來儲存,

*d3dcolor(dword型別相同)

要指定每個顏色分量值d3dcolor_argb ,d3dcolor_xrgb(#define d3dcolor_xrgb(r,g,b) d3dcolor_argb(0xff,r,g,b) )

*d3dcolorvalue (結構),該結構用單精度浮點數來度量每個顏色分量的亮度值,亮度值[0,1]0表示沒有亮度,1表示亮度最大

typedef struct d3dcolorvalued3dcolorvalue;

可用d3dxcolor替代d3dcolorvalue,這兩種結構可相互轉換

typedef struct d3dxcolor

d3dxcolor(dword argb);

d3dxcolor(const float*);

d3dxcolor(const d3dxfloat16*);

d3dxcolor(const d3dcolorvalue&);

d3dxcolor(float r,float g,float b,float a);

operator dword() const ;

...............

.........

#endif

float r,g,b,a;

}d3dxcolor,*lpd3dxcolor;

可將這兩個結構表達成乙個4d向量(r,g,b,a),

顏色向量的點積和叉積沒有實際意義,但是對用分量相乘卻是有意義的,在d3dxcolor中,顏色乘法定義為對應分量分別相乘

為頂點資料結構新增乙個表示顏色的資料成員

struct colorvertex;

const dword colorvertex::fvf = d3dfvf_xyz|d3dfvf_diffuse;

光柵化過程中,需要對多邊形進行著色,著色規定了如何利用頂點的顏色來計算構成圖元的畫素的顏色(平面著色flat shading,gouraud著色gouraud shading)

平面著色每個圖元的每個畫素都被一致地賦予該圖元的第乙個所指定的顏色,使用平面著色模式時,第2個和第3個頂點顏色都被忽略

平面著色容易呈現「塊狀」

在gouraud著色模式下,圖元中各畫素的顏色值由頂點的顏色經線性差值得到

如同direct3d中的許多其他狀態量一樣,著色模式由direct3d狀態機控制

device->setrenderstate(d3drs_shademode,d3dshade_flat);

device->setrenderstate(d3drs_shademode,d3dshade_gouraud);

遊戲開發基礎

任何遊戲都需要一些基本框架,用於實現抽象化,並減輕與底層作業系統互動的痛苦。通常這一框架分成幾個模組 用於建立乙個視窗和處理一些操作,如關閉視窗 暫停或恢復android應用程式等。與視窗管理模組相關聯,用於跟蹤使用者的輸入,如觸控事件 按鍵事件 加速計讀取等。android系統中,這些輸入會被排程...

遊戲開發基礎 十二

第十一章 用d3dxmatrixlookatlh函式計算觀察矩陣 即取景變換矩陣 當在某一固定地點固定攝像機方位,該函式十分有用,但其使用者對於乙個能夠根據使用者輸入做出響應的移動攝像機來說,就顯得力不從心,用4個攝像機向量 右向量 right vector 上向量 up vector 觀察向量 l...

遊戲開發框架基礎

比如,開發第乙個軟體lol killer的思路 第一步 學習c winform程式設計基礎 理解事件驅動的程式設計模型,delegate event,begininovke的用法,圖書館隨便借一本c 教程書應該都有相關的教程。第二步 通過msdn查閱c 獲取系統程序的api,關鍵字搜尋 msdn c...