如何将低分辨率场景拉伸到全屏原始分辨率?

时间:2011-07-11 00:16:31

标签: c++ opengl

我只在DirectX应用程序中看到过这种功能:当您调整窗口大小时,渲染也会相应地拉伸,看起来它实际上是一个被拉伸的纹理。

如何在OpenGL中有效地完成此操作?这样做的目的是创建一个具有原始分辨率的全屏应用程序,因为它很难在LCD屏幕上选择较低的分辨率,并允许我以较低的分辨率渲染以获得更高的FPS。

2 个答案:

答案 0 :(得分:2)

您需要渲染到纹理或渲染缓冲区,然后对实际的默认帧缓冲区执行glBlitFramebuffer。然后正常交换缓冲区。

答案 1 :(得分:-1)

你调用glViewport()告诉OpenGL窗口的哪一部分(以像素为单位)最终将由OpenGL呈现。您可以使用glFrustum(),glOrtho()或glOrtho2D()之类的方法来设置您正在绘制的“世界”的参数。

如果您处理事件以告知您何时调整窗口大小,则可以再次调用glViewport()以相应地更新视口的大小。

所以,如果你的世界在正方形(例如),并且你的视口是矩形的,那么它将具有你所指的效果(它将相应地拉伸,就像它实际上是纹理一样)。