Win98 でアーケード/償還ゲームを実行していましたが、それを実行できるハードウェアはとうとう時代遅れになりました。このゲームでは、3D パスを介していくつかのスケーリング効果を使用し、ビデオ メモリの内外を移動するいくつかのトリックを実行しました。Windows 7 で動作するように移植するとしたら、どのくらいの手間がかかりますか? それは主に再コンパイルでしょうか、それともデバイス インターフェイスを書き直したほうがよいほど API が変換されたのでしょうか。
3 に答える
Win7への移植とは考えないでください。DX9に移植するだけで、DXにWin7パーツを処理させることができます。実際、あなたはおそらくそれをそのままにしておくことができ、それは実行されるべきです-しかしあなたはあなたがDXとは何の関係もないと私が思うビデオメモリでクレイジーなことをしていると言います。(つまり、GDIまたはその他のハックのいずれかを介して?)とにかく、DX7、8、9APIはすべてかなり劇的な違いがあります。しかし、良い点は、それらがすべて下位互換性があることです。お持ちのコードが純粋なdx7の場合は、最新のSDKに対してコンパイルしてみて、win7ですぐに機能するかどうかを確認してください。
ビデオ メモリに物を出し入れしたことはありますか? 身震い
それでも... DX7の頃よりも今の方が早いです。正確には何をしていたのですか?あなたの説明から、それがどれほど簡単かを言うことは不可能です. DX7 アプリは Windows 7 でも動作するはずですが、どの奇妙な機能を使用したためにアプリが壊れたのか、私には思いつきません。
また、アプリケーションを 7 から DX9 に変換することは、実際にはそれほど難しくありません (DX10+ に変換するのは悪夢です)。それらはまだ比較的似ています...当時からの主な変更点は、D3DTRANSFORMSTAGESTATE_* または D3DRENDERSTATE_* のようなものが D3DTSS_* または D3DRS_* に短縮されたことです。
編集: DX7 以降に起こったと考えられる最大の変化は、グラフィック カード メーカーがパレット化されたテクスチャのサポートを中止したことです。これにより、最新のマシンで一部の古いアプリが機能しなくなる可能性があります。それは本当に非常に簡単な修正ですが...
Edit2: ディスクからテクスチャに解凍するのは少し面倒です。あなたの主な問題は、テクスチャを作成するときにパフォーマンスが低下するという事実です。ただし、既に作成されて開いているテクスチャのロードがある場合は、必要に応じて関連するテクスチャにロードできます。ロック/ロック解除のヒットのみを受けます。これは、数フレーム前にリソースをロードすることで軽減できます。ただし、これを行う場合、マルチスレッド化と複数のスレッドからの D3D の呼び出しが必要になることは間違いありません。これを行う場合は、デバイスにマルチスレッド フラグを設定します。
DirectX7 コード (または Direct X コード自体) を作成してからしばらく経ちましたが、思い出すと、7 から 8 の間にいくつかの重要な API 変更イベントがあったことを思い出してください。より困難。特に大きな変更点は、DirectDraw を Direct3D に統合するために 7 以降にシステムをリファクタリングしたことだと思います。これにより、2 つのシステムが 7 と 8 の間で完全に分離されなくなりました。それ以来、私はそれを見ていませんが、多くの新しいコーディング方法と同様に、API がかなり変更されているため、これらの変更を行うのは、あなたが望んでいたようにほとんど再コンパイルするのではなく、おそらく少しのプロジェクトになるでしょう.