【发布时间】:2014-02-08 12:16:54
【问题描述】:
我将 OpenGL 用于基于 2D 的游戏,该游戏的分辨率为 640x480 像素。因此,我像这样设置我的 OpenGL 双缓冲区:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 640, 480, 0, 0, 1);
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
这很好用,我可以使用硬件加速的 GL 纹理绘制所有精灵和背景滚动条。现在我也想支持其他窗口大小,即用户应该能够在 800x600、1024x768 等下运行游戏。所以所有图形都应该缩放到新的分辨率。当然,我可以通过在将纹理绘制为四边形时简单地对所有顶点应用缩放因子来做到这一点。但我不认为我能够以这种方式实现像素完美定位....但是像素完美定位对于2D游戏当然非常重要!
因此,我想问一下是否有可能使用静态 640x480 双缓冲区,仅在将其绘制到屏幕之前对其进行缩放,即像这样:
1) 无论实际输出窗口大小是多少,我的双缓冲区始终为 640x480 像素。
2) 调用 glfwSwapBuffers() 后,640x480 双缓冲区应缩放到可以小于或大于 640x480 的实际窗口大小。
这有可能吗?我认为这对我的游戏来说是最简单的解决方案,因为手动缩放所有顶点可能会给我在像素完美定位方面带来一些问题,不是吗?
谢谢!
【问题讨论】: