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

Windows 7 将directx 7应用程序移植到Windows 7上运行会有多困难?,windows-7,directx,windows-98,Windows 7,Directx,Windows 98,我们有一个街机/赎回游戏在Win98上运行,但可以运行它的硬件最终已经过时了。该游戏使用了许多缩放效果,一些通过3D路径,并玩了一些将东西移入和移出视频内存的技巧。如果我要把它移植到Windows7上运行,那会有多大的麻烦呢?主要是重新编译吗,或者API是否经历了这样的转换,我不妨重新编写设备接口?我已经有一段时间没有编写任何DirectX7代码或Direct X代码了,但如果我记得在7和8之间发生了一些重大的API更改事件,更不用说9或10了,这将使更改变得更加困难。具体地说,我认为主要的变化

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

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

你有没有将东西移入或移出视频内存?战栗

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

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

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


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

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

系统没有足够的内存来存储所有图形,因此许多图形会被动态解压缩到视频内存中,然后从那里延伸到屏幕。较新的系统可能不需要这样做,但在这一点上改变它仍然是可行的。我不记得调色板扩展是发生在软件还是硬件中。它不能按原样工作,否则我不会问。不过,尝试重建可能是值得的。你说得对,它应该可以正常工作——崩溃的主要原因是访问自定义并行端口设备。当使用默认windows驱动程序处理严重的图形时,该程序仍然会崩溃,但似乎至少在一个使用图形驱动程序的系统上工作。尽管该驱动程序/板存在一些缩放/透明度问题。