2013-03-26 71 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。