我正在研究一個簡單的OpenGL應用程序,該應用程序允許用戶通過單擊並拖動到左側(使其不太強烈)或右側(更強烈)來調整簡單窗口的背景顏色。當拖動到右邊,例如,我有這樣的事情:當您使用負面參數調用glClearColor時會發生什麼?
intensity += 0.0001*x; //where x is the current mouse location
...到左邊,另一種方式:
intensity -= 0.0001*x;
intensity
是被傳遞給了全局靜態GLfloat glClearColor
在顯示功能中,多次調用。當用戶在向右拖動時增強顏色時,此策略可以很好地工作,但當向左拖動時在某一點後會變得模糊:當我拖動時顏色變得不那麼強烈,並且應該返回到黑色,但是隨後加強回到原始的顏色。
我認爲問題在於當我拖得太遠時,應該在0和1之間的強度變爲負值,因此glClearColor
只是通過將符號更改爲正值(?)來解決問題。如果是這樣的話,我怎麼能強制傳遞給glClearColor
的值保持在適當的範圍內?我試圖通過確保來解決這個問題,目前的強度不會成爲,如果它已經太低就不會發生負/調整,但它似乎沒有工作:
if(x <= xPrev && intensity >= (.0001*x)) //moving left to de-intensify color
intensity -= 0.0001*x;
...我是第這樣做是不正確的,或者是glClearColor
處理負值與我預期的不同?
另一個有趣的問題是,我的「強度」調整似乎只適用於r,g和/或b值(即,我將「強度」作爲glClearColor
中的一個來使用。值沒有工作......不過,是不是應該改變顏色強度?
「*我該如何強制傳遞給glClearColor的值保持在適當的範圍內?*」您......您不知道如何限制浮點值?你爲什麼不嘗試這樣做,並告訴我們這是否能解決你的問題。 –