C++ w/ OpenGL像素完美绘制

3
我需要在窗口上绘制像素,根据其整数像素位置进行绘制,而不是浮点数。例如,如果我要绘制0,0,则它将位于窗口的左上角,1,1将在0,0的右侧一个像素,并且在0下方一个像素。我想我需要的类似于网格。我不在乎像通常那样0,0是否为原点,但我需要按像素计数,而不是将1作为最大值和-1作为最小值。
我已经尝试过的事情: 我认为可以使用 Window Width ^ -1 * X 进行绘图,实际上确实有效,但并非始终如此。无论如何,我该怎么做呢? 我还做了X位置/屏幕宽度,这是最好的方法,但每10个像素左右就会停止工作。
1个回答

7
首先,OpenGL不能保证在所有情况下像素的位置完美无误。然而,这里有一个非常普遍的陷阱:如果像素坐标是整数,则每个像素的中心将不具有整数坐标。
下面是OpenGL视口中左下角像素的图示:
+Y
^
|     
+-----+
|     |
|  o  |
|     |
+-----+---> +X

如果您的数据被转换为每个像素具有1单位的宽度和高度,则像素的中心位于(0.5, 0.5)。如果在该像素处绘制一个GL_POINT,则坐标应为(0.5, 0.5)。如果绘制一个矩形,则其范围从(0,0)(1,1)。如果通过它绘制一条竖直线,则该线的x坐标应为0.5。
等等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接