如何通过数组传递多参数函数? - C ++

时间:2012-02-11 23:06:28

标签: c++ arrays function opengl floating-point

我正在尝试将包含X,Y和Z坐标(类型为float)的数组传递给函数glTranslatef()但是我无法找到实现此目的的方法。

作为我想要完成的事情的一个例子;

float xyz[3] = {3,2,1};
glTranslatef(xyz);

每当我尝试尝试这样的事情时,我都会收到以下错误

  

无法将'float *'转换为'GLfloat {aka float}'以将参数'1'转换为'void glTranslatef(GLfloat,GLfloat,GLfloat)'

我试过在谷歌搜索但我找不到我想要的东西。

4 个答案:

答案 0 :(得分:4)

glTranslatef需要三个float个参数,而不是一个数组参数。这就是结束。

float XYZ[3] = {3,2,1};
glTranslatef(XYZ[0], XYZ[1], XYZ[2]);

如果你真的很绝望,你可以用宏解压缩它:

#define UNPACK_TRI_ARRAY(ar) ar[0], ar[1], ar[2]

float XYZ[3] = {3,2,1};
glTranslatef(UNPACK_TRI_ARRAY(XYZ));

但是一旦你达到这一点,你必须问自己为什么

答案 1 :(得分:2)

试试这样:

glTranslatef(XYZ[0], XYZ[1], XYZ[2]);

http://www.opengl.org/sdk/docs/man/xhtml/glTranslate.xml

原型:

void glTranslatef(GLfloat   x,
                  GLfloat   y,
                  GLfloat   z);

答案 2 :(得分:0)

glTranslatef(XYZ[0], XYZ[1], XYZ[2]);

答案 3 :(得分:0)

AFAIK,我只是为函数定义了一个带有const float *的重载,然后将数组元素传递给原来的三个参数(X,Y,Z)函数。