我想用OpenGL实现一个函数,以用C++渲染圆柱体。我函数的签名如下:
#define POINTS_NUM 15
#define DEMESION 3
void drawCylinder( int slices, int segments, GLfloat (&vertices)[ POINTS_NUM ][ DEMESION ] );
我想使用对二维数组的引用来限制用户输入,但是正在发生一些奇怪的行为。当我实现上面声明的函数时,发生链接器错误:此处
vase
定义为:GLfloat vase[ POINTS_NUM ][ DEMESION ];
起初,我认为最后一个维度出了问题。因此,我在第二次审判中将其省略。我的函数的这次声明是这样的:void drawCylinder( int slices, int segments, GLfloat (&vertices)[ POINTS_NUM ][] );
现在,当调用为时,将发生编译时错误(vase
定义未更改):drawCylinder( 10, 10, vase );
编译错误:从这个错误中,我可以看到参数
vertices
确实被视为对二维数组的引用,但是为什么在我的第一个版本中vase
被解析为float (* vase)[3]
?我的IDE是Visual Studio2008。我还没有在GCC上尝试过它。该行为是否与编译器相关?
希望有人可以帮我摆脱陷阱。
最佳答案
您的第一个声明很好。似乎您已在头文件中定义了vase
。