Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 删除多余的代码_Opengl_For Loop_Code Cleanup - Fatal编程技术网

Opengl 删除多余的代码

Opengl 删除多余的代码,opengl,for-loop,code-cleanup,Opengl,For Loop,Code Cleanup,我正在尝试用OpenGL制作一个游戏,想移动相机。我是通过使用以下代码完成的: t.calculations(&t1, 5.54, 1.54, 10, 10, 1); t.calculations(&t2, 5.54, 1.54, 10, 10, 1); t.calculations(&t3, 5.54, 1.54, 10, 10, 1); t.calculations(&t4, 5.54, 1.54, 10, 10, 1); t.calculations(&am

我正在尝试用OpenGL制作一个游戏,想移动相机。我是通过使用以下代码完成的:

t.calculations(&t1, 5.54, 1.54, 10, 10, 1);
t.calculations(&t2, 5.54, 1.54, 10, 10, 1);
t.calculations(&t3, 5.54, 1.54, 10, 10, 1);
t.calculations(&t4, 5.54, 1.54, 10, 10, 1);
t.calculations(&t5, 5.54, 1.54, 10, 10, 1);
t.calculations(&t6, 5.54, 1.54, 10, 10, 1);
t.calculations(&t7, 5.54, 1.54, 10, 10, 1);

t.calculations(&t8, 5.54, 1.54, 10, 10, 1);
t.calculations(&t9, 5.54, 1.54, 10, 10, 1);
t.calculations(&t10, 5.54, 1.54, 10, 10 ,1);
t.calculations(&t11, 5.54, 1.54, 10, 10, 1);
t.calculations(&t12, 5.54, 1.54, 10, 10, 1);
t.calculations(&t13, 5.54, 1.54, 10, 10, 1);
t.calculations(&t14, 5.54, 1.54, 10, 10, 1);
t.calculations(&t15, 5.54, 1.54, 10, 10, 1);
t.calculations(&t16, 5.54, 1.54, 10, 10, 1);
t.calculations(&t17, 5.54, 1.54, 10, 10, 1);
t.calculations(&t18, 5.54, 1.54, 10, 10, 1);
但正如您所看到的,这看起来像是代码的过度重复。我尝试使用以下方法代替上述方法:

for (int i = 1; i < 19; i++) {
   t.calculations(&t+i, 5.54, 1.54, 10, 10, 1);
}
for(int i=1;i<19;i++){
t、 计算(&t+i,5.54,1.54,10,10,1);
}
但它不起作用。有人能告诉我一个替代解决方案吗?

假设ti变量都是同一类型,并且类型是双变量:

//下面这句话声明了一个用18个t变量初始化的数组
//将此数组视为值的插槽容器,以下只是语法
//声明和初始化数组的步骤
//重要提示:数组初始化后,不能修改其结构,可以
//替换每个单元格的内容,但既不能添加也不能删除其中的元素
双t[]={t1、t2、t3、t4、t5、t6、t7、t8、t9、t10、t11、t12、t13、t14、t15、t16、t17、t18};
//然后,可以使用[]运算符读取数组的每个单元格,如下所示:
//(另一个重要提示是,数组从“0”开始)
对于(int 0=1;i<18;i++){
//获取存储在数组的每个“单元”中的每个ti变量的地址
t、 计算(&t[i],5.54,1.54,10,10,1);
}
或者,使用不太详细的语法(但相当复杂),上述代码可以表示为:

for(int i=0;i<18;i++){
t、 计算(t+i,5.54,1.54,10,10,1);
}

有关更多信息,请查看c/c++中阵列的联机教程和教程。类似的语法在其他语言中广泛使用

您有18个不同的变量名
t1。。t18
?那么什么是
t
?任何为什么
tN
东西不是数组/向量?我不知道在这种情况下如何使用数组:/而且也不太熟悉向量…谢谢。我试过这个,但不起作用。实际上是t1,t2,t3等等。是另一个类的变量,而不是“double”类型。你能看看为什么现在不行吗?是否必须在原始类中定义此数组?是的,您应该这样做,如果ti变量是该类的成员,则在该类中定义数组,并相应地更改类型(即,如果其类型为float,则在数组声明中使用float)