我們有一個在Win98上運行的街機/兌換遊戲,但是可以運行它的硬件終於過時了。遊戲使用了許多縮放效果,其中一些通過3D路徑,並使用一些技巧將內容移入或移出視頻內存。如果我要將它移植到Windows 7上運行,它可能會有多少麻煩?它主要是重新編譯,還是讓API經歷了這樣的轉換,我不如重寫器件接口?移植一個DirectX 7應用程序在Windows 7上運行有多難?
回答
不要把它當作移植到Win7上。只需簡單地移植到DX9,讓DX用Win7部件完成工作。事實上,你可能只是保持原樣,而不是運行 - 但是你提到你用視頻內存做了瘋狂的事情,我認爲它與DX無關。 (即通過GDI或其他黑客?)。無論如何,DX7,8和9 API都有非常大的差異。但好的是它們都是向後兼容的。如果你的代碼是純粹的dx7,請嘗試編譯最新的SDK並查看它是否適用於win7。
自從我編寫了任何DirectX7代碼(或Direct X代碼)之後,我一直記得在7到8之間有一些重要的API更改事件 - 讓9或10 - 讓這樣做變化有點困難。具體而言,我認爲主要的變化是他們在7年之後重新構造了系統,將DirectDraw合併到Direct3D中,這樣兩個系統在7到8之間就不再完全分開了。從那以後我就沒有看過它了,但我懷疑,新的編碼方法的數量,以及API已經發生了相當大的變化,所以它可能會成爲一個項目來做出這些改變,而不是像你可能希望的那樣重新編譯。
你曾經把東西移入和移出顯存嗎? 不寒而慄
儘管如此,現在比DX7更快。你到底在做什麼?從你的描述來看,不可能說它會是多麼容易。一個DX7應用程序仍然應該在Windows 7上運行,我不能想到你可能會使用什麼奇怪的功能,導致它打破。
同樣將應用程序從7轉換爲DX9實際上並不那麼困難(轉換爲DX10 +將是一場噩夢)。它們還是比較相似的......自那時起,主要的變化就是將D3DTRANSFORMSTAGESTATE_ *或D3DRENDERSTATE_ *縮短爲D3DTSS_ *或D3DRS_ *。編輯:自從DX7發佈以來,我認爲最大的變化就是顯卡製造商已經放棄了對可以在現代機器上打破一些舊應用的紋理紋理的支持。這真的是一個非常簡單的修復,雖然...
編輯2:從磁盤解壓縮到紋理可能有點痛苦。您的主要問題是您創建紋理時最終會遭受性能問題。但是,如果您已經創建並打開了一大堆紋理,那麼您可以隨時加載相關紋理。你只受到鎖定/解鎖命中。這可以通過提前加載一些資源來緩解。但是,如果你這樣做,毫無疑問需要多線程並從多線程調用D3D。如果你這樣做,在設備上設置多線程標誌。
該系統沒有足夠的內存用於所有圖形,因此很多內存都被解壓縮到視頻內存中,然後從那裏延伸到屏幕。較新的系統可能不需要這樣做,但在這一點上改變它仍然有效。我不記得調色板擴展是在軟件還是硬件上發生的。 – 2009-10-07 16:21:27
- 1. 如何在Windows 7上移植Windows 8應用程序
- 2. 在Windows 7上運行一個應用程序
- 3. C#應用程序沒有運行在Windows 7上
- 4. Windows Phone 7應用程序在Windows Phone 8上運行嗎?
- 5. 在Windows Embedded Compact 7上運行windows mobile 6.5應用程序
- 6. 運行第一個Hadoop(在UNIX上)程序(在Windows 7上)
- 7. 如何在Windows 7上運行Windows 8使vb應用程序?
- 8. 如何在設備上運行Windows Phone 7 PhoneGap應用程序
- 9. 如何將MFC應用程序移植到Windows Embedded Compact 7?
- 10. UWP應用程序可以移植到Windows 7嗎?
- 11. 如何將Windows Mobile 6.5上的應用程序代碼移植到Windows Phone 7?
- 12. Windows窗體應用程序在Windows 7上有不良比例
- 13. Windows 7上的DirectX 7和VB6
- 14. 在依賴DLL的Windows 7上運行32位應用程序
- 15. 在桌面上運行Windows Phone 7應用程序
- 16. 可以在Windows 7上運行商店應用程序
- 17. 在Windows 7上運行的WPF Youtube應用程序
- 18. 在Windows 7上運行緩慢的Delphi 6應用程序
- 19. windows-7:無法在設備上運行android應用程序
- 20. 在Windows 7上運行Hadoop 7
- 21. 在Vmware主機上運行android應用程序:windows 7 guest:android 4.4
- 22. Windows 7移動應用程序開發
- 23. C#.net Windows應用程序安裝程序沒有運行在Windows 7中
- 24. 在Windows 7中編譯的ADO應用程序在Windows 7中運行不能在Windows XP中運行msado15.dll
- 25. 程序可移植性問題(Windows XP到Windows 7)
- 26. 將Windows Phone 7移植到Windows Phone 8
- 27. Windows Phone 7上的Flex應用程序
- 28. apache沒有運行在Windows 7上
- 29. JBoss 7:獨立或域:在一臺機器上運行多個應用程序(同一個應用程序)
- 30. 將我的DirectX應用程序移植到其他機器
它不起作用,或者我不會問。儘管如此,嘗試重建可能是值得的。 – 2009-10-07 16:22:36
你說得對,它應該只是工作 - 崩潰的主要來源是訪問一個自定義的並行端口設備。當程序使用默認的Windows驅動程序進行嚴格的圖形處理時,該程序仍會崩潰,但似乎可以在圖形驅動程序中工作(至少在一個系統上)。 (儘管該驅動程序/板卡有一些縮放/透明問題。) – 2009-10-23 16:36:41