我需要在窗口上绘制一个像素,根据它在整数中的像素位置,而不是浮点数。比如,例如,如果我要绘制0,0那么它将是窗口的左上角,1,1将是0,0和1以下的0像素右边的一个像素。我想我是什么需要它有点像我网格。我不在乎0,0是原始的通常情况,但我需要它按像素计数,不是1为最大值,-1为最小值,或者其他。
我已经尝试过的事情: 我以为我可以做一些类似于这个窗口宽度^ -1 * X的绘图,这实际上确实有用,但不是所有的时间。无论如何,我该怎么做呢? 我也做了X位置/屏幕宽度,效果最好,但每10个左右的像素停止工作。
答案 0 :(得分:7)
首先,在所有情况下,OpenGL都不保证像素完美放置。但是,有一个非常常见的问题:如果像素坐标,每个像素的中心将不会有整数坐标。
这是OpenGL视口中左下角像素的图表。
+Y
^
|
+-----+
| |
| o |
| |
+-----+---> +X
如果您的数据被转换为每个像素的宽度和高度为1个单位,则像素的中心位于(0.5, 0.5)
。如果您在该像素处绘制GL_POINT
,则坐标应为(0.5, 0.5)
。如果您绘制一个矩形,它将从(0,0)
转到(1,1)
。如果您在其中绘制一条垂直线,则该线的x坐标应为0.5。
等等。