浮点值未返回正确值

Float is not returning correct value

本文关键字:返回      更新时间:2023-10-16

只要快速提醒一下,我的代码可能会出现更多错误,因为我仍在学习如何正确发布问题。

我正在开发我的第一个程序,它是有目的的。我学习了许多教程,对编程有了基本的了解。

我使用的是VC++2012和供过于求openGL版本4.3.0

我的目标是输入一个与天气相对应的数字。然后根据数字播放不同的动画。一开始为了简化,我只是想改变背景颜色。

我发现这是用这个做的。

glClearColor(0.0, 0.0, 0.0, 0.0, 1.0);

这似乎在通过代码手动输入数字时起作用。然而,当我试图在不同的类中为每个RGB值分配一个浮点值时,得到的背景仍然是黑色的。

我的天气变化是在天气课上用案例完成的。

我看的大多数教程都说尽可能将变量保密,以防止以后出现问题。所以在screenRGB类中,我设置了设置和获取RGB颜色的函数。

我想这可能就是我的错误的来源。

当我运行这个程序时,我确定了我使用的浮点值是多少。

cout << screenrgb.getScreenRed() << endl;

这有助于隔离出一些出了问题的地方。返回的浮点值为-1.07374e+008。这看起来很奇怪

只有当我更换时

float getScreenBlue(void){return screenBlue;}

到。。。

float getScreenBlue(void){return 1.0;}

当窗户打开时,颜色发生了变化,这是可以理解的。这使我确信集合函数的编码不正确。

我觉得我可能只是错过了一件小事,或者可能是一件大事。据我所知,其余的似乎都奏效了。

这是我的完整代码,很抱歉,如果这个块太大而无法理解,如果需要的话,我可以尝试删除我知道不是问题的部分。

http://pastebin.com/1NhHkSN1

再次感谢,如果发布错误,请道歉。

本。

init()函数中,您声明screenRGB:的本地实例

void init(void)
{
    screenRGB screenrgb;    /// <-- local instance!
    cout << screenrgb.getScreenRed() << endl;
    glClearColor(screenrgb.getScreenRed(), screenrgb.getScreenGreen(), screenrgb.getScreenBlue(), 1.0);
    cout << screenrgb.getScreenRed() << endl;
    glShadeModel(GL_SMOOTH);
    glEnable(GL_BLEND);
    glEnable(GL_TEXTURE_2D);
}

此实例与您在Weather::changeWeather():中声明的实例是分开的

    string changeWeather()
    {
            screenRGB screenrgb;  /// <-- A completely different local instance!

这两个实例是未连接的,因为每个实例都是其自身函数的局部实例。此外,每次调用该函数时都会得到一个全新的本地实例。

您需要传递一个公共实例,可能是screenRGB &或类似的实例,具体取决于您要做的整体工作。在调用Weather::changeWeather()和渲染代码的某个外部作用域中声明该实例。