0

如何更改分辨率并将整个游戏扩展到新的分辨率?我希望我的游戏有一个基本分辨率,当我改变它以拉伸到新的分辨率时。我看到了一些类似的问题,但所有答案都表明我应该更改演示参数。如果我这样做,我的屏幕分辨率会改变,但我所有其他对象的大小保持不变并且绘制在错误的位置。

我使用 LPD3DXSPRITE 对象将纹理绘制到屏幕上,一些 DirectX 文本和定义如下的顶点:

#define D3DFVF_VERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)

我尝试将 D3DXSPRITE_OBJECTSPACE 放在 sprite->Begin() 并使用投影、视图和世界矩阵,但没有成功。

有人可以告诉我这种方法是否可行,我该怎么做?我还阅读了另一种建议渲染到表面,然后拉伸表面的方法,但我不知道如何实现。我是 DirectX 的初学者。我用谷歌搜索了第二种方法,但找不到解释它的人,而且我认为我不能从精灵绘制到表面。

编辑:

我设法使用 CreateRenderTarget、SetRenderTarget 和 StretchRect 方法做到这一点,首先打印到表面,然后在后台缓冲区上拉伸它。

4

2 回答 2

0

您可以通过使用 DIP(与设备无关的像素或与设备无关的单位)测量坐标而不是物理像素来实现此目的。您还必须将您的游戏标记为可识别 DPI,以便操作系统在您更改分辨率时不会缩放您的 UI。有关 DPI 的详细信息,请参阅本文

于 2013-03-20T04:45:50.453 回答
0

我设法使用 CreateRenderTarget、SetRenderTarget 和 StretchRect 方法做到这一点,首先打印到表面,然后在后台缓冲区上拉伸它。

于 2013-03-20T16:57:45.333 回答