2013-01-09 236 views
0

我試圖畫一個8位風格的遊戲角色(來自塞爾達的鏈接),因爲我在練習OpenGL。 我已經開始了他的臉,這是右邊的大廣場,並且他的眼睛從他臉部的右側開始畫了兩個街區......(6塊,最左邊的2塊是一隻眼睛)C++ OpenGL - 顏色

眼睛頂部(綠色塊上方的塊)應該是深綠色(請參閱代碼),但它仍然採用第一個較大塊(面部)的顏色。

我希望這是有道理的...... 請看到這樣的畫面: 8-Bit Char

我在做什麼錯的是要保持改變其顏色?

我假設我需要做更多的事情來接受RGB顏色? glColor3f(29, 137, 59); ...

+4

紋理可能會更容易使用。 – luiscubal

+1

請不要使用即時模式(glBegin,glEnd)。使用頂點數組。這些已經存在了將近20年。但GL_NEAREST過濾模式下的紋理可能更容易處理。 – datenwolf

回答

9

glColor3f接受浮點參數。通過這樣做,大數字將被轉換爲浮點數,因此變成29.0f,137.0f和59.0f。給定顏色在0-1的範圍內表示,這些顏色被限制在0-1的範圍內,當然也會出現白色(1.0,1.0,1.0)。

改爲使用glColor3ub。它接受一個無符號字節作爲它的參數,它的範圍是0-255,這可能是你最習慣的。還有其他形式,如glColor3i,glColor3s,glColor3ui,glColor3us等接受整數和短褲(及其無符號變體),這是整數和短褲範圍內定義的。這些只是在內部轉換爲小數變數(例如decimal = int/INT_MAX)。

+0

非常好。問題解決了:)謝謝。 – binary101