3

我需要在窗口上绘制一个像素,根据它在整数中的像素位置,而不是浮点数。例如,如果我要绘制 0, 0 它将是窗口的最左上角,1,1 将是 0、0 和 0 以下 1 像素右侧的一个像素。我猜我需要它有点像我的网格。我不在乎 0, 0 是否像通常那样是原点,但我需要它按像素计数,而不是 1 作为最大值,-1 作为最小值,或其他。

我已经尝试过的事情:我想我可以做这样的事情 Window Width ^-1 * X 进行绘图,这确实有效,但并非总是如此。无论如何,我该怎么做呢?我也做了 X 位置/屏幕宽度,效果最好,但每隔 10 个左右像素就会停止工作。

4

1 回答 1

7

首先,OpenGL 并不保证在所有情况下都可以完美放置像素。但是,有一个非常常见的问题:如果像素坐标,每个像素的中心不会有整数坐标。

这是 OpenGL 视口中左下角像素的示意图。

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

如果您的数据被转换为每个像素的宽度和高度为 1 个单位,则像素的中心位于(0.5, 0.5). 如果您GL_POINT在该像素处绘制 a ,则坐标应为(0.5, 0.5)。如果你画一个矩形,它会从(0,0)(1,1)。如果你画一条穿过它的垂直线,这条线的 x 坐标应该是 0.5。

等等。

于 2013-03-26T02:36:53.700 回答