java渲染为半大小的帧缓冲区,然后将其放大以实现像素化外观
我将要用libGdx创建一个2D桌面小游戏,我希望它具有复古的像素化外观,就像“Flappy Bird”这样的游戏。为了达到这个效果,我想到了以下几点:
- 创建游戏窗口(例如640x480)
- 创建一半大小的帧缓冲区(即320x200)
- 将所有内容渲染到帧缓冲区
- 从帧缓冲区获取纹理
- 使用SpriteBatch将纹理绘制到屏幕上,放大2倍并使用TextureFilter。最近的李>
我知道我可以用SpriteBatch单独缩放每个雪碧。draw()但我认为,以原始分辨率渲染所有内容并放大最终构图可能更容易
那么,上述技术是获得像素化外观的合适方法吗
# 1 楼答案
你的想法听起来像是一个完美的方法。缺点是它确实需要额外的数据拷贝,但另一方面,原始渲染只需要1/4的像素,这为您节省了相当多的渲染开销
在纯OpenGL中,您可以在步骤5中使用
glBlitFramebuffer()
。这需要OpenGL 3.0或更高版本。它本质上与绘制纹理四边形的操作相同,但这只是一个调用,底层实现可能更高效