我正在使用 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 定义为浮点数,但我尝试的任何方法都不起作用。任何人都可以帮忙。