我正在研究一個小型遊戲引擎。它的一個特點是它應該支持DirectX和OpenGL渲染。顏色 - DirectX vs OpenGL
我正在使用頂點緩衝區對象,我有一個結構來定義我的頂點的格式。問題是我希望能夠爲DirectX和OpenGL使用相同的結構,這樣我就可以從DirectX渲染組件切換到OpenGL組件,而無需更改對象的頂點。
這可能嗎?
目前,我公司採用以下結構的DirectX:
struct Vertex{
float position[3]; // x, y, z
float normal[3]; // nx, ny, nz
DWORD colour; // The vertex color
float texture[2]; // u, v
};
連同:
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1)
靈活頂點格式。
我的OpenGL的理解告訴我,當我想畫我的目標,我可以告訴顏色使用此命令:
glColorPointer(4, GL_FLOAT, sizeof(Vertex), BUFFER_OFFSET24);
在繪圖程序
,假設顏色有4種成分。事實上,這是有效的。但是我不相信,我可以告訴OpenGL使用該任務無符號整數,所以我使用:
struct Vertex{
float position[3]; // x, y, z
float normal[3]; // nx, ny, nz
float colour[4]; // r, g, b, a
float texture[2]; // u, v
};
該結構爲我的OpenGL代碼。
輝煌,就是這樣!很高興OpenGL做了互操作步驟;) – Shikamu