2009-10-05 70 views
0

我們有一個在Win98上運行的街機/兌換遊戲,但是可以運行它的硬件終於過時了。遊戲使用了許多縮放效果,其中一些通過3D路徑,並使用一些技巧將內容移入或移出視頻內存。如果我要將它移植到Windows 7上運行,它可能會有多少麻煩?它主要是重新編譯,還是讓API經歷了這樣的轉換,我不如重寫器件接口?移植一個DirectX 7應用程序在Windows 7上運行有多難?

回答

0

不要把它當作移植到Win7上。只需簡單地移植到DX9,讓DX用Win7部件完成工作。事實上,你可能只是保持原樣,而不是運行 - 但是你提到你用視頻內存做了瘋狂的事情,我認爲它與DX無關。 (即通過GDI或其他黑客?)。無論如何,DX7,8和9 API都有非常大的差異。但好的是它們都是向後兼容的。如果你的代碼是純粹的dx7,請嘗試編譯最新的SDK並查看它是否適用於win7。

+0

它不起作用,或者我不會問。儘管如此,嘗試重建可能是值得的。 – 2009-10-07 16:22:36

+0

你說得對,它應該只是工作 - 崩潰的主要來源是訪問一個自定義的並行端口設備。當程序使用默認的Windows驅動程序進行嚴格的圖形處理時,該程序仍會崩潰,但似乎可以在圖形驅動程序中工作(至少在一個系統上)。 (儘管該驅動程序/板卡有一些縮放/透明問題。) – 2009-10-23 16:36:41

0

自從我編寫了任何DirectX7代碼(或Direct X代碼)之後,我一直記得在7到8之間有一些重要的API更改事件 - 讓9或10 - 讓這樣做變化有點困難。具體而言,我認爲主要的變化是他們在7年之後重新構造了系統,將DirectDraw合併到Direct3D中,這樣兩個系統在7到8之間就不再完全分開了。從那以後我就沒有看過它了,但我懷疑,新的編碼方法的數量,以及API已經發生了相當大的變化,所以它可能會成爲一個項目來做出這些改變,而不是像你可能希望的那樣重新編譯。

0

你曾經把東西移入和移出顯存嗎? 不寒而慄

儘管如此,現在比DX7更快。你到底在做什麼?從你的描述來看,不可能說它會是多麼容易。一個DX7應用程序仍然應該在Windows 7上運行,我不能想到你可能會使用什麼奇怪的功能,導致它打破。

同樣將應用程序從7轉換爲DX9實際上並不那麼困難(轉換爲DX10 +將是一場噩夢)。它們還是比較相似的......自那時起,主要的變化就是將D3DTRANSFORMSTAGESTATE_ *或D3DRENDERSTATE_ *縮短爲D3DTSS_ *或D3DRS_ *。編輯:自從DX7發佈以來,我認爲最大的變化就是顯卡製造商已經放棄了對可以在現代機器上打破一些舊應用的紋理紋理的支持。這真的是一個非常簡單的修復,雖然...

編輯2:從磁盤解壓縮到紋理可能有點痛苦。您的主要問題是您創建紋理時最終會遭受性能問題。但是,如果您已經創建並打開了一大堆紋理,那麼您可以隨時加載相關紋理。你只受到鎖定/解鎖命中。這可以通過提前加載一些資源來緩解。但是,如果你這樣做,毫無疑問需要多線程並從多線程調用D3D。如果你這樣做,在設備上設置多線程標誌。

+0

該系統沒有足夠的內存用於所有圖形,因此很多內存都被解壓縮到視頻內存中,然後從那裏延伸到屏幕。較新的系統可能不需要這樣做,但在這一點上改變它仍然有效。我不記得調色板擴展是在軟件還是硬件上發生的。 – 2009-10-07 16:21:27

相關問題