我只在DirectX应用程序中看到过这种功能:当你调整窗口大小时,渲染也会相应地拉伸,看起来它实际上是一个拉伸的纹理。
如何在OpenGL中高效地完成这项工作?这样做的目的是创建一个原生分辨率的全屏应用程序,因为在LCD屏幕上选择较低的分辨率相当困难,并允许我以较低的分辨率渲染以获得较高的FPS。
发布于 2011-07-11 08:24:15
您需要渲染到纹理或渲染器缓冲区,然后对实际的默认帧缓冲区执行glBlitFramebuffer。然后像往常一样交换缓冲区。
发布于 2011-07-11 08:26:36
您可以调用glViewport()来告诉OpenGL窗口的哪个部分(以像素为单位)最终将由OpenGL呈现。您可以使用glFrustum()、glOrtho()或glOrtho2D()等方法来设置要在其中绘制的“世界”的参数。
如果您处理一个事件来通知您何时调整窗口大小,则可以再次调用glViewport()来相应地更新视口的大小。
因此,如果你的世界是方形的(例如),而你的视口是矩形的,那么它将具有你所引用的效果(它将相应地拉伸,就像它实际上是一个纹理)。
https://stackoverflow.com/questions/6644625
复制相似问题