DirectX 9独立分辨率

时间:2013-03-20 00:27:45

标签: c++ directx resolution resolution-independence

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

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

#define D3DFVF_VERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)

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

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

编辑:

我设法使用CreateRenderTarget,SetRenderTarget和StretchRect方法,首先打印到曲面,然后在后缓冲区上拉伸它。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我设法使用CreateRenderTarget,SetRenderTarget和StretchRect方法,首先打印到曲面,然后在后缓冲区上拉伸它。