代码之家  ›  专栏  ›  技术社区  ›  Justin Love

将directx 7应用程序移植到Windows 7上运行会有多困难?

  •  0
  • Justin Love  · 技术社区  · 17 年前

    我们有一个街机/赎回游戏在Win98上运行,但可以运行它的硬件最终已经过时了。该游戏使用了许多缩放效果,一些通过3D路径,并玩了一些将东西移入和移出视频内存的技巧。如果我要把它移植到Windows7上运行,那会有多大的麻烦呢?它主要是重新编译,还是API经历了这样的转换,以至于我可以重新编写设备接口?

    3 回复  |  直到 17 年前
        1
  •  0
  •   Pod    17 年前

    不要把它看作是移植到Win7。只需简单地移植到DX9,让DX处理Win7部件即可。事实上,你可以让它保持原样,让它继续运行——但你提到你用视频内存做了一些疯狂的事情,我认为这和DX无关((通过GDI或其他黑客?)。无论如何,DX7、8和9 API都有很大的差异。但好在它们都是向后兼容的。如果您拥有的代码是纯dx7,请尝试根据最新的SDK进行编译,并查看它是否可以直接在win7上运行。

        2
  •  0
  •   Streklin    17 年前

    我已经有一段时间没有编写任何DirectX7代码(或DirectX代码),但如果我记得在7和8之间发生了一些重大的API更改事件,更不用说9或10了,这将使这样的更改更加困难。具体来说,我认为主要的变化是他们在7点之后重构了系统,将DirectDraw合并到Direct3D中,这样两个系统在7点和8点之间就不再完全分开了。从那时起,我就再也没有看过它了,但我怀疑,考虑到新的编码方法的数量以及API已经发生了相当大的变化,所以进行这些变化可能会是一个项目,而不是像您希望的那样主要进行重新编译。

        3
  •  0
  •   Goz    17 年前

    你有没有在视频内存中移动过东西? 颤抖

    还是。。。现在这样做比DX7出现时要快。你到底在干什么?从你的描述中,很难说这有多容易。DX7应用程序应该仍然在Windows7上运行,我想不出你使用了哪些奇怪的功能会导致它崩溃。

    此外,将应用程序从7转换为DX9实际上并不那么难(转换为DX10+将是一场噩梦)。他们仍然相对相似。。。自那些日子以来,主要的变化是将D3DTTransferorMstagEstate或D3DRENDERSTATE等内容缩短为D3DTSS或D3DRS。

    编辑:自DX7以来,我所能想到的最大变化是图形卡制造商已经放弃了对调色板纹理的支持,这“可能”会破坏现代机器上的一些旧应用程序。这真的是一个非常简单的解决办法,虽然。。。

    Edit2:将东西从磁盘解压缩到纹理可能有点痛苦。您的主要问题是,在创建纹理时,您最终会受到性能影响。但是,如果已经创建并打开了大量纹理,则可以根据需要加载到相关纹理。你只会遭受锁定/解锁命中。这可以通过提前几帧加载资源来缓解。如果您这样做,毫无疑问,它将需要多线程和从多线程调用D3D。如果执行此操作,请在设备上设置多线程标志。

    推荐文章