【问题标题】:Scale Resolution in PygletPyglet 中的比例分辨率
【发布时间】:2012-01-23 07:16:52
【问题描述】:

我正在使用 pyglet (OpenGL) 库,我希望能够在不更改窗口大小的情况下更改虚拟分辨率。例如,一个 2x2 的框将在屏幕上绘制为 4x4 像素。我知道我可以找到正在绘制的所有内容并单独对其进行缩放,但这可能会很昂贵。 我无法在网上找到解决方案(如果它甚至存在的话),所以任何帮助将不胜感激。 澄清:我正在考虑大多数游戏中的分辨率设置。窗口以相同大小保持全屏显示,但比例发生变化。

【问题讨论】:

  • “我在考虑大多数游戏中的分辨率设置。”游戏中的分辨率设置会更改显示器显示的分辨率。对于全屏游戏,这会更改 桌面 分辨率。

标签: python opengl scale resolution pyglet


【解决方案1】:

你需要导入openGL才能使用缩放功能:

from pgylet.gl import *

接下来,在你的游戏窗口初始化后,输入以下代码:

#These arguments are x, y and z respectively. This scales your window.
glScalef(2.0, 2.0, 2.0)

此时您的分辨率将翻倍,但您的窗口大小将保持不变。您可以通过将窗口的宽度和高度加倍来轻松纠正此问题。此外,您的纹理会显得模糊,因此我们需要修复它。我们需要在 on_draw() 函数中为纹理设置参数:

def on_draw(self):
        self.clear() #clears the screen
        #The following two lines will change how textures are scaled.
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) 
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
        self.label.draw() #blits the label to the screen

您现在应该有两倍于原始大小的像素显示。

【讨论】:

    【解决方案2】:

    澄清:我正在考虑大多数游戏中的分辨率设置。窗口以相同大小保持全屏显示,但比例发生变化。

    不,窗口确实改变了大小,因为屏幕分辨率改变了,窗口也跟着改变了。

    但是您完全可以这样做:首先将您的图像渲染为所需较小尺寸的 FBO,然后渲染该 FBO 的内容以覆盖整个窗口。如果 3D 引擎使用某种形式的后期处理(如景深、颜色分级、合成效果),这几乎是免费的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 2011-02-26
      • 1970-01-01
      • 2022-06-18
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多