【发布时间】:2012-01-06 23:43:22
【问题描述】:
我正在开发一个小型游戏引擎。它的特点之一是它应该支持 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 代码的结构。
【问题讨论】: