我正在尝试将包含X,Y和Z坐标(类型为float)的数组传递给函数glTranslatef()但是我无法找到实现此目的的方法。
作为我想要完成的事情的一个例子;
float xyz[3] = {3,2,1};
glTranslatef(xyz);
每当我尝试尝试这样的事情时,我都会收到以下错误
无法将'float *'转换为'GLfloat {aka float}'以将参数'1'转换为'void glTranslatef(GLfloat,GLfloat,GLfloat)'
我试过在谷歌搜索但我找不到我想要的东西。
答案 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)函数。