我正在使用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定义为浮点数,但我尝试的无效。任何人都可以提供帮助。
答案 0 :(得分:1)
translatePoints需要一个长度为3的float数组。但是你传递的是一个浮点数。因此编译错误。我担心我无法辨别你想要做什么,所以建议那些正确的代码。