C ++ w / OpenGL Pixel Perfect Plot

时间:2013-03-26 02:25:21

标签: c++ opengl pixel put

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

我已经尝试过的事情: 我以为我可以做一些类似于这个窗口宽度^ -1 * X的绘图,这实际上确实有用,但不是所有的时间。无论如何,我该怎么做呢? 我也做了X位置/屏幕宽度,效果最好,但每10个左右的像素停止工作。

1 个答案:

答案 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。

等等。