-2

我正在使用 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 循环:

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

我这样做但它不起作用,我遇到了错误:

无法使用“float”类型的 Ivalue 初始化“float *”类型的参数

我四处搜索并试图找到替代方案,例如将 x 定义为浮点数,但我尝试的任何方法都不起作用。任何人都可以帮忙。

4

1 回答 1

1

translatePoints 需要一个长度为 3 的浮点数组。但您传递的是一个浮点数。因此编译器错误。恐怕我无法辨别您要做什么,因此建议使用正确的代码。

于 2013-11-01T19:13:49.903 回答