我目前正在开发一个OpenGL应用程序。到目前为止,编程API时一切运行良好。C数组vs结构
对于通常的数据类型,我使用结构。例如:
struct vec3 {
GLfloat x;
GLfloat y;
GLfloat z;
}
但现在我认为使用相同的数据类型作为简单数组,例如
typedef GLfloat vec3[3];
我真的很喜欢来处理类型,简单数组,因为它更容易访问他们,我甚至可以使用循环来修改它们的值(例如在GLfloat矩阵[16]中) 然而,我不喜欢C返回数组,所以我必须为操作提供存储空间 mat4_identity(mat4输出) 结构我可以很容易地说
mat4 m = mat4_identity() clean and nicely.
我现在的问题是:哪一个是更好的性能明智的(当然具有例如许多verticies的时候,我只能认为重结构指针引用的+ acesses)哪一个,我应该在年底实际使用为我的OpenGL API。
你有没有考虑过'struct vec3 {GLFloat vec3 [3]; }'? – chux
@chux是的,但这似乎更像是一个奇怪的黑客/解决方法对我来说。理想的情况是,如果我可以使用结构体,但像数组一样访问它们(显然,当它们全都由具有相同数据类型的变量组成时)。不幸的是,这不起作用,因为我听说结构中有特殊的对齐或包装。 –
'struct vec3 {union {struct {float x,y,z; }; float a [3]; };' – Joe