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
C++ 需要帮助合并gScaled if语句吗_C++_Opengl - Fatal编程技术网

C++ 需要帮助合并gScaled if语句吗

C++ 需要帮助合并gScaled if语句吗,c++,opengl,C++,Opengl,我正在创建一个缩放函数,到目前为止它还可以工作,但现在我遇到了一个新问题,我使用大量的if语句来更改gScaled。我想将这些if语句组合成尽可能少的语句,以便以后更容易向缩放添加较小的增量,而不必再写入100个if语句 代码: 我试着用我自己的(即gScaled(x,y,z);)替换双打,然后把它们加在那些(x+=0.1;y+=0.1;z+=0.1;)上,它们确实有效,但我不知道如何让它停止。Ehh,为什么不简单地计算一下呢 double const f_zoom = 1.0 + 0.1 *

我正在创建一个缩放函数,到目前为止它还可以工作,但现在我遇到了一个新问题,我使用大量的if语句来更改gScaled。我想将这些if语句组合成尽可能少的语句,以便以后更容易向缩放添加较小的增量,而不必再写入100个if语句

代码:


我试着用我自己的(即gScaled(x,y,z);)替换双打,然后把它们加在那些(x+=0.1;y+=0.1;z+=0.1;)上,它们确实有效,但我不知道如何让它停止。

Ehh,为什么不简单地计算一下呢

double const f_zoom = 1.0 + 0.1 * zoom;
glScaled(f_zoom, f_zoom, f_zoom);
除了避免大量重复的代码外,它还可以防止愚蠢的错误,就像您在代码中遇到的错误一样:

/* ... */
if(zoom == -3){
    glScaled( 0.7, 0.7, 0.7);
}
if(zoom == -4){
    glScaled( 0.7, 0.7, 0.7);
}
/* ... */

你看到了吗?对于-3和-4,缩放因子编码为0.7。这肯定不是你想要的。

也发布替换代码。你从来没有听说过switch语句吗?@nicolas:为什么还要麻烦使用switch?这是基本的艺术。也尝试了切换,出于某种原因,它喜欢忽略我的中断语句并导致无限循环。不管怎样,泰
/* ... */
if(zoom == -3){
    glScaled( 0.7, 0.7, 0.7);
}
if(zoom == -4){
    glScaled( 0.7, 0.7, 0.7);
}
/* ... */