无法理解gl光栅的位置

时间:2013-06-09 06:31:09

标签: opengl

当我使用OpenGL绘制字体后,即使在读完红皮书后,我仍然无法理解“光栅位置”。什么是栅格位置? glrasterpos2f和glvertex2f有什么区别?什么是GL_CURRENT_RASTER_POSITION?为什么我必须使用此API绘制字体? 如果有人能说明这一点,我将不胜感激。

1 个答案:

答案 0 :(得分:4)

早期版本的OpenGL具有许多“光栅”操作,可直接在帧缓冲区的像素栅格上执行像素操作,而无需经过整个基元设置。

栅格位置是窗口坐标中下一个栅格操作开始的位置。例如, glDrawPixels 只会过度绘制帧缓冲区的一部分,栅格位置定义将放置替换像素数据的左下角。类似于 glBitmap 允许用 glColor 替换像素的值,并在同一步骤中提前光栅位置。

使用glRasterPos设置栅格位置时,传递给此调用的坐标将经历与顶点坐标相同的变换管道,以生成窗口坐标栅格位置。 重要仅转换栅格位置,实际的栅格操作发生在“像素空间”中并且不会被转换。此外,如果传递给glRasterPos的坐标恰好被剪裁,则以下光栅操作将变为No-Ops。

如果要直接在窗口坐标中设置栅格位置,可以使用 glWindowPos

  

为什么我必须使用此API绘制字体?

使用 glBitmap 绘制位图字体是微不足道的,因此它曾经是一种非常流行的字体绘制方法。因此,如果您使用光栅操作绘制字体,则必须设置光栅位置。

然而,在现代版本的OpenGL(版本3及更高版本)中,所有光栅操作都已被删除。这也意味着,您必须使用不同的方法在现代版本的OpenGL中绘制文本。