問題タブ [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 に答える
348 参照

c - シンプルなシングル バッファ アプリケーションの作成 (IDirectDraw)

元の DirectDraw インターフェイスを使用して、単一のバッファ付きウィンドウ アプリケーションを作成しようとしています。

これは純粋に教育目的であり、正当な理由による態度です。インターフェイスをいじっていIDirectDrawます (DirectX 1.0 のように、これがオリジナル バージョンであることを強調します)。

現在、ドキュメンテーションには、バック バッファの作成と、プライマリ サーフェスとバック バッファ サーフェス間の反転に関する一連のチュートリアルが含まれています。

ただし、ウィンドウ化された単一バッファ アプリケーションの記述については説明していません。実際、私はそのアイデアへの言及をほとんど見つけることができません。それが不可能であることを示すものは何もありません。

アプリケーションとの連携レベルを設定することDDSCL_NORMALで、ウィンドウ内で動作します。

続いて、成功後にプライマリ サーフェスを作成します。

この関数も成功します。バックバッファを作成しないことに注意してください。

ただし、私のメインループでは:

ウィンドウには何も描画されません。私の元のコード (フルスクリーンのバッファリングされたアプリケーション) は、「hello, world!」を正しく表示します。画面の左上にあり、唯一の変更は、バックバッファーの作成を停止し、プライマリ サーフェスに直接書き込むための小さな編集です。

で呼び出しCreateSurfaceた後にバックバッファのオプションで呼び出すSetCooperativeLevelDDSCL_NORMAL、エラーが返されます。ドキュメントに次のように記載されているため、これは理解できます。

IDirectDraw::SetCooperativeLevel を使用してモードを DDSCL_NORMAL に設定していた場合、サーフェス間でブリットするサーフェスしか作成できませんでした。

私は何かを逃しましたか?DirectDraw を根本的に誤解していませんか? バッファを使用することは次の目的であるという印象を受けました。

  • パフォーマンス上の利点、および
  • 画面割れ防止に。

私はこれらのどちらも気にしません。私に何ができる?

0 投票する
1 に答える
801 参照

c++ - C++ でゼロから DirectDraw サーフェスを作成する

2 次元配列を DDS に変換してファイルに保存しようとしています。Array は Color 構造体でいっぱいです (それぞれが赤、緑、青、およびアルファ コンポーネントを持ちます)。配列を正しい形式にしたら、それをファイル部分に保存しても問題はないと確信しています。

これには lib を使用するか (そのライセンスでクローズド ソース プロジェクトで使用でき、Linux と Windows の両方で動作する限り)、手動で行うことも問題ありません。やれ。

誰かが私を正しい方向に向けることができれば、本当に感謝しています。

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

c++ - DirectDraw の最後のエラー文字列を取得する方法 (DirectX 7)

DirectDraw メソッドの実行に失敗した場合、DirectX 7 で失敗エラー文字列を取得する方法を教えてください。

ここでは、障害情報のエラー メッセージをポップアップ表示します。エラーの LPCSTR 文字列を取得するには?

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

texture2d - SharpDX ツールキット Content.LoadSharpDXException をスローします

SharpDX ツールキットを使用して Direct Draw Surface を Texture2D var にロードしようとしています。そこで、ピクセルと呼ばれる var を作成し、paint.net を使用して dds ファイルを作成し、asdf.dds という名前を付けました。そのファイルをプロジェクトの Content フォルダーに移動し、「出力ディレクトリにコピー」を「新しい場合はコピー」に変更しました。私が今使っているなら

次の例外が発生します(ドイツ語):

私の恐ろしい翻訳:

SharpDX.SharpDXException で、タイプ「SharpDX.DLL」の例外が発生しましたが、ユーザー コードで処理されませんでした。追加情報: HRESULT: [0x80070057]、モジュール: [全般]、ApiCode: [E_INVALIDARG/無効な引数]、メッセージ: パラメーターが正しくありません。

0 投票する
1 に答える
173 参照

c++ - IDirectDrawSurface7::Blt が E_INVALIDARG を返した

ステップ1:

ステップ2:

RECT SrcRect={0,0,fTexWidth,fTexHeight}; RECT DstRect = {0,0,60,20};

注: 画像サイズ: 3170 x 64

m_pPrimarySurf->Blt(...) は E_INVALIDARG を返しました。なぜ ?どうも !

0 投票する
1 に答える
153 参照

directx - IDirectDrawSurface7::Blt - ソース サーフェスの NULL ポインタ

IDirectDrawSurface7::Blt の呼び出し中に lpDDSrcSurface を NULL にすることはできますか?

上記のコードは単純にブリッティングをスキップしているように見えますが、MSDN はそれについて何も述べていません。

0 投票する
1 に答える
179 参照

c++ - DirectX 3 (Three) はどのように情報をディスプレイに表示しますか?

DirectDraw 用の proxyDLL を取得しましたが、プロキシされた関数は呼び出されませんが、ゲームは proxyDLL で動作します。

どういうわけか、FRAPS は 1 秒あたりのフレーム数のカウンターを表示できるため、データがどのように表示されるかがわかります。

しかし、実際に表示を更新すると思われる機能はどれもヒットしません。ブレークポイントがヒットしていないようです。これまで。(Flip、Begin/EndSceneなどを試しました)

取得したコードは次のリンクです。

http://svn2.assembla.com/svn/lightningstools/trunk/D3D_DDraw_Proxy/

だから私の質問は:

DirectX 3 が表示を更新するために使用する関数はどれですか? ブレークポイントを探す/配置する必要があるのはどの関数ですか?

ここでの問題は、DirectX 3 のドキュメントが見つからないことです。

D3D9 dll がロードされているかどうかを processexplorer で確認しましたが、ロードされていません。したがって、D3D9 フックはオプションではありません。