問題タブ [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++ - レガシ コードでの Windows 8 での DirectDraw レンダリングの問題
DirectDraw や DirectX についてはほとんど何も知りませんが、古い Windows 9x ゲームを Windows 8 に移植するのを手伝っています。ゲームはレンダリングに DirectDraw を使用しており、Windows 8 ではゲームの GUI に大きなアーティファクトがあります。
GUIは次のようになります。
そして、これは Windows 8.1 で実行されている同じビルドです。
これは大したことではないことは承知していますが、この質問に答えるのに役立つ追加情報を提供できるかどうかはわかりません. 私はコードにアクセスできます。ビットマップをロードする方法、DirectDraw を初期化する方法などをお見せできます。しかし、どのビットが興味深いのかわかりません。
これは古い Win32 API アプリであることに注意してください。MFC も WPF もありません。ただの古いメッセージ ポンプです。
できる限りの情報を提供させていただきます.g
winapi - 重複した高速 (ちらつきのない) マウス カーソルの動き?
ウィンドウ内でマウス カーソルの動きを複製 (エミュレート) したい場合を想像してください (カーソル オーバーレイを描画する場合など)。私はウィンドウを持っており、ユーザーがマウスを動かしたときに非常に正確に似たマウスアイコンの動きが欲しいのですが、ウィンドウの境界内にあります(つまり、動きはウィンドウの境界にスケーリングされます)。これは、3 つのモニター設定があり、私のウィンドウがモニター 2 (中央のもの) でフルサイズである場合を意味します。カーソルをモニター 1 の左端からモニター 3 の右端に移動すると、ウィンドウ内でカーソルが重複し、ウィンドウの左端からウィンドウの右端に移動します。
以前、GDI でちらつきが発生したことがあります。したがって、これを実装する前に、これを実装するための最良の (そして願わくば最も簡単で最速のコーディング) 方法は何かと考えていました。(私はRAW入力を設定していたので、マウスの動きごとにメッセージが表示されます)
ここに私の考えがあります: GDI: おそらく XOR 描画またはバッファーへのクリア/描画。GDI+ : ? DirectDraw : オーバーレイ メソッド ? (まだ十分に見ていません) Direct3D または Windows Media API ですか?
私のメインウィンドウもタイマー(500ms)で更新され、それにbitbltされています。
また、同様のプロジェクトやチュートリアル、またはソースを誰かが知っていれば、それは素晴らしいことです。
ありがとう
bitmap - IWICBitmapSource、IWICBitmap、IWICBitmapDecoder からビットマップ BitsPerPixel を取得します。
主題がすべてを物語っていると思います。しかし、詳細には、ビットマップを読み込んで操作し、表示しており、GDIでそれを行っていました。繰り返し発生するため、スピードを追加したいと思います。
何年も前に、私は DirectX を他の目的で使用していましたが、私が見たものはすべて、DirectX をやめて Direct2D に移行するように言っています。そのため、その知識をすべて捨てて、最初からやり直す時が来ました。本当にMSのやり方です;-)
ビットマップを操作するために、レンダリングに入る前に、'Lock()' で取得できることがわかりました。また、インターフェイスの関数もサイズを教えてくれます。しかし、BBP とストライドも知る必要があります。
誰かが「なぜ ::GetBBP()... DUH を使用しないのですか」と言う前に、MSDN やその他のソースを何時間も検索した後、そのようなものをリモートで見つけることができませんでした。そして、非常に紛らわしい COM インターフェイスがたくさんあります。
私が見つけることができる唯一のものは、GUID を返す GetPixelFormat() であり、それを比較するために約 150 の "if (...)" ステートメントを記述します。3 つの値についてテストし、それらのいずれでもない場合は拒否できるようにするためです (1,8,32) これを処理する効率的な方法はほとんどありません。
また、GetPixelFormat() もストライドを教えてくれません。
これを行う方法はありますか?
(ビットマップも圧縮されていないため、IWICBitmapDecoder で実行する必要さえありませんが、IWICBitmap に「ここにブロブがあるので、サイズ xy のビットマップとして使用してください」と単純に伝える方法をまだ解明していません)
ご協力ありがとうございます。
-スコット
windows - DirectDraw + レイヤード ウィンドウのカラー キー?
を使用してウィンドウを作成しWS_EX_LAYERED
、カラーキーを設定していSetLayeredWindowAttributes()
ます。FillRect()
ウィンドウの内側を使用して単純な四角形を描画することにより、このカラー キーが実際にウィンドウに透明なパッチを作成することを確認できます。ただし、DirectDraw を使用してウィンドウに描画している場合、これは機能しません。IDirectDrawSurface7
ウィンドウに を作成していて、それにBlt()
いくつかのピクセルを追加しています。一部のピクセルはカラー キーで色付けされていますが、透明とは見なされません。カラー キーに表示されるだけです。
レイヤード ウィンドウのカラー キーイングと競合する DirectDraw サーフェス固有のものはありますか?
を使用してアルファ値を設定するSetLayeredWindowAttributes()
と、DirectDraw サーフェスで正常に動作するように見え、実際に半透明に見えます。
delphi - GDI または GR32 関数の代わりにグラフィック カード (DirectX、OpenGL) を使用する
現在、私は自分のプロジェクトに GR32 関数を使用しています。ここでは、多くのブレンディング、彩度、コントラスト、ぼかしなどの画像操作があります。また、カスタム画像操作もあります。
基本的に、CPU の代わりに処理にグラフィック カードを使用するために、GR32 (または GDI、違いはありません) をグラフィック カードの命令に置き換えたいと考えています。
OpenGL ユニットは必要ありません。3D 操作はしたくありません。CPU 命令の代わりにグラフィックス カードの計算を使用したいだけです。
私の質問は >
- GPUを使用する最良の方法は何ですか?
- これらの目的のために書かれたライブラリはありますか?
directdraw - DirectX 12 でどのようにテキストを描画しますか?
これは、 DirectX 11 でテキストを描画するにはどうすればよいですか?のフォローアップの質問です。
Direct3D-12 では、物事がはるかに複雑になり、それが新しいため、適切なライブラリをオンラインで見つけることができませんでした。
私は基本的な Direct3D12 FPS テスト アプリケーションを構築しています。レンダリングされた画像と共に FPS データを画面に表示したいと思っています。
windows - 「このアプリケーションを実行すると、デスクトップ ウィンドウ マネージャーがオフになります」とは何を意味しますか?
アプリケーション マニフェストの互換性セクションに関して、MS は次のように述べています。
変化の顕現
マニフェストに互換性セクションがないアプリケーションは、Windows 7 および将来の Windows バージョンで既定で Windows Vista の動作を受け取ります。(...)
(...)
DirectDraw ロック
- Windows 7: Windows 7 用にマニフェストされたアプリケーションは (...)
- Windows Vista (デフォルト): アプリケーションは (...)アプリケーションを実行すると、デスクトップ ウィンドウ マネージャーがオフになります。
このメモは、次の DirectDraw エントリに対して繰り返されます。
これは一体何を意味するのでしょうか?デスクトップ (MFC) アプリのいずれも互換性マニフェストを定義していませんが、デスクトップで「オフ」になっていることに気付いたことはありません。