调整sfml应用程序窗口的大小

时间:2015-01-05 17:40:15

标签: c++ resize sfml

我是SFML的新手,现在我有游戏编程的经验。在我的代码中,我有不同的坐标对象。现在我将所有x和y硬编码为固定分辨率。问题是如何正确编码?我的意思是如何编码,如果玩家将调整游戏窗口大小,所有对象也将调整大小?

提前致谢

向上

1 个答案:

答案 0 :(得分:3)

您需要做的基本思路是将变换应用于绘制调用。

想出你想要的"虚拟"显示为640比480.在主窗口循环中,您应该轮询事件;我们正在寻找的事件是类型为SizeEvent的sf :: Event。调整窗口大小时,将调用此事件,您将获得显示区域的新X / Y分辨率。

处理该事件时,您需要根据缩放绘图功能的数量生成一些新数字。例如,如果我的目标是"或者"虚拟"显示是640乘480,窗口大小为1600乘960,然后我将查看我当前的宽高比,并决定我可以缩放多少。对于X,1600/640是250%的因子,但我的Y仅为960/480(200%)。在这种情况下,我会使用因子2来放大尺寸,然后在左侧和右侧放置160个像素黑条(这样我保持相同的宽高比)。

AFAIK,SFML实际上没有可以应用变换的全局矩阵 - 我很可能是错的。但是,您可能需要做的是将您在X轴上绘制的每个精灵的位置偏移160像素,然后按比例缩放2.0倍。您可能还想在Window.display之前在屏幕的左侧和右侧绘制黑色矩形,以确保没有任何"剪辑"边缘。

抱歉,我没有提供任何实际代码 - API文档是您的朋友,尤其是this页面上的setScale(),setPositition()和setTransform()。