我正在开发一个小型游戏引擎。其中一个特性是支持DirectX和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代码中的结构体。