“无法初始化类型为'float *'的参数,其值为'float'类型的Ivalue”编译器错误

时间:2013-11-01 19:08:26

标签: c++ arrays opengl for-loop

我正在使用c ++,opengl和GLUT在xcode中制作游戏。我有一个模型,它有自己的.h和.cpp文件,我已经绘制了它,但我现在想翻译它。我不能使用gltranslate因为我只想移动枪而不是我的相机。模型文件如下:

// M4.h

extern unsigned int M4NumVerts;
extern float M4Verts [151248];
extern float M4Normals [140064];
extern float M4TexCoords [153680];

// M4.cpp

unsigned int M4NumVerts = 37812;

float M4Verts [151248] = {
// f 1/1/1 1582/2/1 4733/3/1
-0.00205801177070031, 0.0252329378141267, -0.266482197565778,
-0.00205347560809555, 0.015738643990207, -0.265580239652506,
-0.00908273427886488, 0.018200092410135, -0.264843587943923,...};

float M4Normals [140064] = {
// f 1/1/1 1582/2/1 4733/3/1
-0.1361849642872, -0.0937589754128839, -0.986236741371776,
-0.1361849642872, -0.0937589754128839, -0.986236741371776,
-0.1361849642872, -0.0937589754128839, -0.986236741371776,...};

float M4TexCoords [153680] = {
// f 1/1/1 1582/2/1 4733/3/1
0.110088, 0.229552,
0.108891, 0.243519,
0.119508, 0.240861,..};

我的数学课中有一个函数可以翻译这样的点:

void Math::translatePoint(float P[3], float x, float y, float z){
P[0] += x;
P[1] += y;
P[2] += z;
}

如果我执行以下操作,该功能适用​​于一点:

  Math::translatePoint(M4Verts[x], 0, 0, -0.5);

我希望它适用于所有要点,所以我为循环做了这个:

for (int x = 0; x < M4NumVerts; x++) {
    Math::translatePoint(M4Verts[x], 0, 0, -0.5);
}

我这样做,但它不会工作,我遇到了错误:

无法初始化类型为'float'的类型'float *'的参数

我已经四处寻找并试图找到替代方案,比如将x定义为浮点数,但我尝试的无效。任何人都可以提供帮助。

1 个答案:

答案 0 :(得分:1)

translatePoints需要一个长度为3的float数组。但是你传递的是一个浮点数。因此编译错误。我担心我无法辨别你想要做什么,所以建议那些正确的代码。