問題タブ [directdraw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
390 参照

windows - DirectDraw 出力適応

古いゲームに機能を追加するプロジェクトに取り組んでいます。アイデアは、ウィンドウ表示で実行するオプションを追加することです (元は 800x600 フルスクリーンのみをサポートしています)。

これまでのところ、directDraw の初期化を変更してフルスクリーン排他モードを削除し、GDI で動作できるようにし、クリッパーを作成し、すべてを適切に設定しました。ポイントは、ゲームがフルスクリーン モードを 8 ビットの色深度に設定し、ウィンドウ表示で実行すると、出力が発生することです。この画像のようなゴミ:

ウィンドウ化されたゲーム出力

これまでのところ、問題を回避するために GetDIBits と SetDIBits を使用していくつかのトリックを試みましたが、成功しませんでした。

ゲームは非常に古いバージョンの directDraw で動作します (このバージョンに関するドキュメントはまったくありません。私の作業のほとんどは推測とテストに基づいています)。

このゲームは、BltFast を使用して画面に情報を取得します。

これは、DIBits を使用して問題を修正するために作成されたコードの一部です。

PrimarySurface = ゲームのプライマリ サーフェス自体

BltFast への呼び出しを変更して画面に正しく出力することで、8 ビット カラー フォーマットをバッファから直接変換する方法はありますか?

出力を別の DC に再ルーティングしてから、GetDIBits/SetDIBits を使用してイメージを修正する方が良い解決策ですか?

0 投票する
0 に答える
221 参照

c++ - DirectDraw Surface GetDC() のより高速な代替手段は?

問題

Direct2D コンテンツを DirectDraw サーフェス (バックバッファー) に描画しようとしていますが、この部分は問題ありません。問題は、DirectDraw サーフェス (最新の PC) で GetDC() を使用するコストです。これは、Direct2D 描画が発生する前に Direct2D で BindDC() に使用されるデバイス コンテキストをロックして取得します。GetDC と ReleaseDC にはかなりのコストがかかるため、フレームごとに 1 回実行すると、15 FPS のように感じられます。

DirectDraw サーフェスで Get/ReleaseDC() を取得するためのより高速な方法または代替方法はありますか、または何らかの方法でキャッシュして、耐えられないパフォーマンスが得られないようにする方法はありますか?

バックストーリー 古いD​​irectDraw でビルドされた古いゲームのソースが失われ、フックを使用してグラフィック API をアップグレードしようとしています。最終的には、すべての directdraw API 呼び出しを direct2d に移動したいと考えています。