2013-03-26 67 views
3

我需要繪製一個像素在窗口上,根據其在整數像素的位置,而不是浮動。例如,如果我要繪製0,0,它將是窗口的最左上角,1,1將會是右邊的一個像素,它的右邊是0,0和1像素。我猜我需要它是有點像我格。我不在乎0,0是否像它通常的原點那樣,但是我需要它通過像素進行計數,沒有1作爲最大值,-1作爲最小值,或者其他值。C++ w/OpenGL像素完美情節

我已經試過的東西: 我以爲我可以做這樣的窗口寬度^ -1 * X的繪圖,而且實際上可以工作,但不是所有的時間。無論如何,我怎麼會這樣做呢? 我也做過X位置/屏幕寬度,並且工作效果最好,但它每10個像素就停止工作。

回答

7

首先,在所有情況下,OpenGL並不保證像素的完美位置。但是,有一個很常見的問題:如果像素座標,每個像素的中心不會有整數座標。

下面是OpenGL視口中左下角像素的示意圖。

+Y 
^ 
|  
+-----+ 
|  | 
| o | 
|  | 
+-----+---> +X 

如果您的數據被轉換,使得每個像素具有一個寬度和1個單位的高度,則該像素的中心是在(0.5, 0.5)。如果您在該像素處繪製GL_POINT,則座標應爲(0.5, 0.5)。如果您畫一個矩形,它將從(0,0)(1,1)。如果通過它畫一條垂直線,那麼該線應該有一個0.5的x座標。

Et cetera。