我即将用libGdx创建一个小型2D桌面游戏,我希望它能从像Flappy Bird这样的游戏中获得你所知道的复古像素化外观 . 为了达到这个效果,我想到了以下几点:
-
创建一个游戏窗口(例如640x480)
-
创建一半大小的帧缓冲区(即320x200)
-
将所有内容渲染到帧缓冲区
-
从帧缓冲区获取纹理
-
使用SpriteBatch将纹理绘制到屏幕上,将其缩放2倍并使用TextureFilter.Nearest .
我知道我可以使用SpriteBatch.draw()单独缩放每个sprite,但我认为,以原始分辨率渲染所有内容并且只是放大最终合成可能更容易 .
那么上述技术是否是获得像素化外观的合适方式?
1 回答
你的想法听起来像一个非常好的方法 . 缺点是它确实涉及额外的数据复制,但另一方面,您的原始渲染仅为1/4像素,这可以节省相当多的渲染开销 .
在普通的OpenGL中,您可以使用
glBlitFramebuffer()
进行第5步 . 这需要OpenGL 3.0或更高版本 . 它's essentially the same operation as drawing a textured quad, but it'是单个调用,底层实现可能更有效 .