2013-07-15 65 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()以及渲染代碼的某個外部作用域中聲明該實例。