gpt4 book ai didi

opengl - OpenGL 中的低分辨率模仿旧游戏

转载 作者:行者123 更新时间:2023-12-02 10:15:05 24 4
gpt4 key购买 nike

我有兴趣知道如何在 OpenGL 中模仿旧游戏(如 Atari 2600)的低分辨率来制作 fps 游戏。我想最好的方法是将缓冲区写入纹理,放在四边形上并将其显示到屏幕分辨率。

看看http://www.youtube.com/watch?v=_ELRv06sa-c ,例如(很棒的游戏!)

欢迎任何建议、帮助或示例代码。

最佳答案

我认为最好的方法就像你说的那样,将所有内容渲染为低分辨率纹理(最好使用 FBOs 完成),然后通过绘制屏幕大小的四边形来显示纹理(当然使用GL_NEAREST 作为纹理的放大过滤器)。也许您还可以使用glBlitFramebuffer直接从低分辨率FBO复制到高分辨率帧缓冲区,尽管我不知道是否可以直接复制到默认帧缓冲区(显示的帧缓冲区)方式。

编辑:查找 framebuffer_blit 的规范后看来你可以使用glBlitFramebuffer(EXT/ARB)从低分辨率FBO复制到高分辨率默认帧缓冲区。这可能比使用纹理映射四边形更快,因为它完全绕过顶点片段管道(尽管这本来是一个简单的管道)。另一个优点是,如果需要,您还可以获得低分辨率深度和模板缓冲区,并且可以通过这种方式在低分辨率背景之上渲染高分辨率内容,这可能是一个有趣的效果。所以它会以某种方式发生:

generate FBO with low-res renderbuffers for color and depth (and stencil)
...
glBindFramebuffer(GL_FRAMEBUFFER, lowFBO);
render_scene();
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
glBlitFramebuffer(0, 0, 640, 480, 0, 0, 1024, 768,
GL_COLOR_BUFFER_BIT [| GL_DEPTH_BUFFER_BIT], GL_NEAREST);

关于opengl - OpenGL 中的低分辨率模仿旧游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7071090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com