2016-02-19 18 views
0

我」一些OpenGL教程工作使用過剩和我遇到glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)的解釋?

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) 

我明白它做什麼,但我不明白是怎麼做的呢?

縱觀定義:

GLUT_DOUBLE      0x0002 
GLUT_RGB       0x0000 
GLUT_DEPTH       0x0010 

,我可以看到,有一個或功能的論點逐位操作。

這個按位操作如何在上面的宏上工作?它們代表什麼值,來自內存的物理地址?

現在我只是顯示一些在400x400像素窗口中旋轉的形狀,禁用任何參數似乎沒有任何視覺效果。

謝謝!

+0

它可能有助於將所涉及的數字的十六進制表示轉換爲二進制。計算OR操作的結果很簡單。 –

回答

3

這些常數中的兩個,GLUT_DOUBLEGLUT_DEPTH,每個都包含一個設置的比特:

GLUT_DOUBLE = 0x0002 = 0b0000 0000 0000 0010 
GLUT_DEPTH = 0x0010 = 0b0000 0000 0001 0000 

相結合的按位的常量或創建一個具有兩個設置這些位的新值,並有可能檢查是否這些位使用例如

if ((display_mode & GLUT_DOUBLE) != 0) { ... } 

GLUT_RGB爲零。包括它對結果沒有影響;我懷疑它代表了一個默認設置。

使用的具體數字沒有更深的意義。它們只是用於在一個整數參數中組合一堆開/關選項的方式。

+0

謝謝!數字的事情讓我很困惑。 – Sabyc90

0

至於標誌的含義,請查看文檔glutInitDisplayMode()。特別是,

GLUT_DOUBLE

位掩碼來選擇一個雙緩衝窗口。如果它也被指定,這將覆蓋GLUT_SINGLE。

GLUT_DEPTH

用於選擇具有深度緩衝區的窗口的位掩碼。

雙緩衝將使您的動畫更平滑。對於一個簡單的程序,你可能不會看到單緩衝和雙緩衝之間的區別。對於更復雜的動畫,差異是顯着的。

深度緩衝區對於3D圖形很重要。

我建議你做一些研究,如果你想了解這些如何工作更詳細。