2013-07-15 44 views
-1

只是快速抬起头来,可能比我的代码有更多的错误,因为我仍在学习如何正确发布问题。浮动无法返回正确的值

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

我使用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

再次感谢,并道歉,如果这已经公布不正确。

本。

回答

2

在你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()以及渲染代码的某个外部作用域中声明该实例。