問題タブ [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.
c - シンプルなシングル バッファ アプリケーションの作成 (IDirectDraw)
元の DirectDraw インターフェイスを使用して、単一のバッファ付きウィンドウ アプリケーションを作成しようとしています。
これは純粋に教育目的であり、正当な理由による態度です。インターフェイスをいじっていIDirectDraw
ます (DirectX 1.0 のように、これがオリジナル バージョンであることを強調します)。
現在、ドキュメンテーションには、バック バッファの作成と、プライマリ サーフェスとバック バッファ サーフェス間の反転に関する一連のチュートリアルが含まれています。
ただし、ウィンドウ化された単一バッファ アプリケーションの記述については説明していません。実際、私はそのアイデアへの言及をほとんど見つけることができません。それが不可能であることを示すものは何もありません。
アプリケーションとの連携レベルを設定することDDSCL_NORMAL
で、ウィンドウ内で動作します。
続いて、成功後にプライマリ サーフェスを作成します。
この関数も成功します。バックバッファを作成しないことに注意してください。
ただし、私のメインループでは:
ウィンドウには何も描画されません。私の元のコード (フルスクリーンのバッファリングされたアプリケーション) は、「hello, world!」を正しく表示します。画面の左上にあり、唯一の変更は、バックバッファーの作成を停止し、プライマリ サーフェスに直接書き込むための小さな編集です。
で呼び出しCreateSurface
た後にバックバッファのオプションで呼び出すSetCooperativeLevel
とDDSCL_NORMAL
、エラーが返されます。ドキュメントに次のように記載されているため、これは理解できます。
IDirectDraw::SetCooperativeLevel を使用してモードを DDSCL_NORMAL に設定していた場合、サーフェス間でブリットするサーフェスしか作成できませんでした。
私は何かを逃しましたか?DirectDraw を根本的に誤解していませんか? バッファを使用することは次の目的であるという印象を受けました。
- パフォーマンス上の利点、および
- 画面割れ防止に。
私はこれらのどちらも気にしません。私に何ができる?
c++ - C++ でゼロから DirectDraw サーフェスを作成する
2 次元配列を DDS に変換してファイルに保存しようとしています。Array は Color 構造体でいっぱいです (それぞれが赤、緑、青、およびアルファ コンポーネントを持ちます)。配列を正しい形式にしたら、それをファイル部分に保存しても問題はないと確信しています。
これには lib を使用するか (そのライセンスでクローズド ソース プロジェクトで使用でき、Linux と Windows の両方で動作する限り)、手動で行うことも問題ありません。やれ。
誰かが私を正しい方向に向けることができれば、本当に感謝しています。
c++ - DirectDraw の最後のエラー文字列を取得する方法 (DirectX 7)
DirectDraw メソッドの実行に失敗した場合、DirectX 7 で失敗エラー文字列を取得する方法を教えてください。
ここでは、障害情報のエラー メッセージをポップアップ表示します。エラーの LPCSTR 文字列を取得するには?
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/無効な引数]、メッセージ: パラメーターが正しくありません。
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 を返しました。なぜ ?どうも !
directx - IDirectDrawSurface7::Blt - ソース サーフェスの NULL ポインタ
IDirectDrawSurface7::Blt の呼び出し中に lpDDSrcSurface を NULL にすることはできますか?
上記のコードは単純にブリッティングをスキップしているように見えますが、MSDN はそれについて何も述べていません。
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 フックはオプションではありません。