我正在研究一个小型游戏引擎。它的一个特点是它应该支持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