首页 文章

渲染到半尺寸的帧缓冲区,然后将其缩放以实现像素化的外观

提问于
浏览
1

我即将用libGdx创建一个小型2D桌面游戏,我希望它能从像Flappy Bird这样的游戏中获得你所知道的复古像素化外观 . 为了达到这个效果,我想到了以下几点:

  • 创建一个游戏窗口(例如640x480)

  • 创建一半大小的帧缓冲区(即320x200)

  • 将所有内容渲染到帧缓冲区

  • 从帧缓冲区获取纹理

  • 使用SpriteBatch将纹理绘制到屏幕上,将其缩放2倍并使用TextureFilter.Nearest .

我知道我可以使用SpriteBatch.draw()单独缩放每个sprite,但我认为,以原始分辨率渲染所有内容并且只是放大最终合成可能更容易 .

那么上述技术是否是获得像素化外观的合适方式?

1 回答

  • 1

    你的想法听起来像一个非常好的方法 . 缺点是它确实涉及额外的数据复制,但另一方面,您的原始渲染仅为1/4像素,这可以节省相当多的渲染开销 .

    在普通的OpenGL中,您可以使用 glBlitFramebuffer() 进行第5步 . 这需要OpenGL 3.0或更高版本 . 它's essentially the same operation as drawing a textured quad, but it'是单个调用,底层实现可能更有效 .

相关问题