我们在Win98上运行了一个街机/兑换游戏,但是可以运行它的硬件终于过时了。游戏使用了许多缩放效果,一些通过3D路径,并且播放了一些技巧,将内容移入和移出视频内存。如果我要将它移植到Windows 7上运行,它可能会有多大的麻烦?它主要是重新编译,还是API经历了这样的转换,我不得不重新编写设备接口?
答案 0 :(得分:0)
已经有一段时间了,因为我已经编写了任何DirectX7代码(或者根本就是Direct X代码),但是如果我记得在7到8之间有一些重要的API更改事件 - 让9或10 - 这样会产生这样的改变有点困难。具体来说,我认为主要的变化是他们在7之后重构了系统,将DirectDraw合并到Direct3D中,这样两个系统就不再在7到8之间完全分开了。从那以后我没有看过它,但我怀疑给定了新的编码方法的数量以及API已经发生了相当大的变化,所以它可能会成为一个项目来进行这些更改,而不是像您希望的那样进行重新编译。
答案 1 :(得分:0)
你曾经搬进和移出视频内存吗? 颤动
仍然......现在比DX7出现时更快做到这一点。你究竟在做什么?根据你的描述,不可能说它会有多容易。 DX7应用程序仍应在Windows 7上运行,我无法想象您可能使用的哪些奇怪功能会导致它破坏。
同样将应用程序从7转换为DX9实际上并不是那么难(转换为DX10 +将是一场噩梦)。它们仍然相对类似......从那时起发生的主要变化是将D3DTRANSFORMSTAGESTATE_ *或D3DRENDERSTATE_ *缩短为D3DTSS_ *或D3DRS _ *。
编辑:自从DX7以来,我所能想到的最大变化就是显卡制造商已经放弃了对可能破坏现代机器上某些旧应用程序的palettised纹理的支持。这确实是一个非常简单的解决方案......
Edit2:将磁盘中的内容解压缩为纹理可能会有点痛苦。您的主要问题是,在创建纹理时,最终会遇到性能损失。但是,如果您已经创建并打开了大量纹理,那么您可以随时加载到相关纹理。你只会遭遇锁定/解锁。这可以通过提前几帧加载资源来减轻。但是,如果你这样做,毫无疑问需要多线程并从多个线程调用D3D。如果这样做,请在设备上设置多线程标志。
答案 2 :(得分:0)
不要认为它是移植到Win7。只需简单地移植到DX9并让DX与Win7部件一起工作。事实上,你可能只是按原样离开它并且它会运行 - 但是你提到你用视频内存做疯狂的事情,我认为它与DX无关。 (即通过GDI还是其他一些黑客?)。无论如何,DX7,8和9 API都有很大差异。但好处是它们都是向后兼容的。如果您拥有的代码是纯dx7,请尝试针对最新的SDK进行编译,看看它是否能直接在win7上运行。