問題タブ [bitblt]
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++ - Aeroを有効にした場合のBitBltパフォーマンス
画面をキャプチャするためにBitBltのパフォーマンスを向上させたいです。Aeroが有効なままの場合、画面の400x400ピクセル領域のみをキャプチャすると、キャプチャ時間が平均50ms(フル1920x1200)から約33ms(400x400の場合)に短縮されます。これは残念ながら低い改善です。
Aeroを無効にする唯一のオプションはありますか?Aeroを無効にすると、全画面で3ミリ秒の高速キャプチャを実行できることを私は知っています。
winapi - 画面に複数のスプライトがある場合にwin32ビットマップが点滅する
私はwin32apiを使用して、スプライトを使用したゲームを作成してきました。何らかの理由で、画面に複数のスプライトがある場合、それらが消えて戻ってきたかのように時々点滅します。画面にスプライトが1つしかない場合は、正しく表示されます。
私はC++、win32 APIを使用しており、VisualStudio08で作業しています
以下は私が持っているおおよそのものです:
私はこれを正しく行っていますか?もしそうなら、私はどこで間違っているのですか?十分な情報を提供していない場合は、教えてください。修正します。
vb.net - Windows Aero での BitBlting
何ヶ月もの間、私は画像を Aero ガラスに適切にレンダリングすることに関する問題を解決しようと試みてきました。これまでに収集したものから、Aero にはアルファ チャネルが必要なため、グラフィック オブジェクトをビットマップとしてレンダリングする必要があります。より具体的には、私がやろうとしているのは、完璧でちらつきのないテキスト ボックス (およびその他のコントロール) を作成することです。複数のテキスト ボックスが必要な場合があるため、フォーム aero の一部のレンダリングにフォールバックしたくありません。また、DrawToBitmap 関数は機能しますが、遅すぎるため、BitBlt でこれを実現したいと考えています。
私が今持っているのは、IntPtr として格納されている TextBox の Graphics コントロールです。このグラフィック コントロールを取得して Bitmap にロードし、その Bitmap を BitBlt で描画するにはどうすればよいですか? (または、リンクが示唆するように、Graphics オブジェクトのアルファ値を修正します)
私の質問は、Visual Basic 2010 .NET でこれを行う方法はありますか?
誰かがこの質問に答えたり、情報を提供したり、同等の代替手段を提供したりできる場合は、非常に感謝しています.
これは、私が作成した以前のスレッドへのリンクであり、問題をより詳細に説明しています。
よろしくお願いします、
- ジェイク M.
PS
このリンクは大いに役立ち、私の問題に対処します。ただし、最後の投稿の解決策は私が探しているもののようですが、それをビジュアルベーシックに変換する方法がわかりません。
javascript - Canvas で ROP を使用できますか? (私はパフォーマンス上の理由のみを気にします)
ですから...ゲームを作る古き良き時代には、画面にスプライトを描画するとき、ROP を使用してスプライトの「非透明」部分のみを描画していました。(はい、長い間ゲームのコーディングを行っていません)
(私が何を言っているのかわからない場合は、これをチェックしてください。これは美しいハックでした)
私は現在、いくつかの「HTML5 ゲーム」を実行しようとしています。さまざまな方法を試してパフォーマンスを測定していますが、Canvas に ROP がないように見えることに気付きました。何かを描くとき、その「何か」には完全なアルファ チャネルがあり、実際に半透明のものを描くことは、「不透明な」ものを描くのとまったく同じくらい高速です。
これは、半透明のものを描画している場合は素晴らしいことですが、99.999% の作業では、これは信じられないほど無駄に聞こえます。ROP があれば、おそらく 10 倍の速度で描画できるように感じます。古いマスクトリック。
ここで何か不足していますか?
キャンバスを「アルファをオフにして」描画を高速化する方法は既にありますか?
私は完全に頭がおかしいのでしょうか? これは問題ではありません。実際には、実際には既に 1000 個のスプライトを 3 ミリ秒 (300 FPS) で描画できます。さらに、ビデオ カードはおそらく直接それを実行しているか、すぐに実行するので、どうすればよいでしょうか?
どう思いますか?
ありがとうございました!
ダニエル
c++ - BitBlt を使用して別のウィンドウの個々のピクセルを取得する
これは私が現在行っていることです:
- 経由でウィンドウ DC を取得する
GetWindowDC
- で互換性のある DC を作成します
CreateCompatibleDC
GetPixel
互換性のある DC で通話する
残念ながら、私の GetPixel 呼び出しはすべて を返していCLR_INVALID
ます。これが私のコードです。
何か案は?
c++ - クライアントウィンドウでの画像のキャプチャwin32c++
このコードは、カーソルの周りに最大100x100のボックスでウィンドウにペイントされた画像をキャプチャしようとしています。BitBltはここのどちらの場所でも0を返していません。問題は、ウィンドウの背景からグローバルに宣言されたHDCであるメタに画像をコピーしようとしているBitBltの最初の関数呼び出しにあると確信しています。 。HDCを完全にメモリ内に作成するだけでなく、空白のビットマップを作成してロードし、それに関連付けられたハンドルに新しい画像をキャプチャしようとしましたが、消しゴムのように機能して白いボックスを描画するだけでした。カーソルの動きに合わせて。関連するコードを以下に示します。mouseRectとclientRectは、それぞれカーソルとクライアントの長方形の周りのボックスに関連するグローバル変数です。どんな助けでもありがたいです、ありがとう!
c++ - 黒い背景を描くWin32ダブルバッファリング
C ++でwin32でプロジェクトを実行し、描画中の画像をダブルバッファリングしようとしていますが、正しいビットマップが描画された黒い画面が表示されます。これは、カーソルとともにビットマップをドラッグしてビットマップを描画しない WM_MOUSEMOVE 状態も引き起こしています。ペイントのコードは次のとおりです。paint() は WM_PAINT の下の wndproc で呼び出されます。scroll はスクロール バーの位置で、これまでは使用されていません。
windows - アプリウィンドウの境界外(より大きい)のコントロールのBitBlt()スクリーンショットはできますか?
高さが大きい(画面サイズよりも大きい)コントロールのBitBlt()スクリーンショットを取得したいのですが、それに対応して非常に高いウィンドウを使用したくありません。このコントロールのハンドルでBitBlt()を実行してみましたが、そのほとんどがウィンドウの境界の外側にありましたが、ウィンドウの内側にある領域のみがキャプチャされました。ウィンドウの外側の領域は黒としてキャプチャされます。
これを修正する方法はありますか?たとえば、それがここでの主な問題である場合、コントロールはそれ自体を完全に(ウィンドウに表示されている部分だけでなく)描画するように強制できますか?
c++ - C++ を使用して色を反転する BitBlt
BitBlt WinAPI を使用して C++ を使用してビットマップを構成していますが、色を反転するにはどのフラグを使用すればよいのでしょうか?
winapi - GDI 関数 BitBlt および StretchBlt ハードウェアは Win32 で高速化されていますか?
これについては検索しても明確な答えが得られないようです。Win32 ブリッティング操作はハードウェア アクセラレーションされていますか (GDI+ ではなく GDI)。これらの関数がグラフィックス ドライバーとどのように連携するかはわかりません。?GetCaps? のように、この機能を検証するための関数呼び出しはありますか? 特定のグラフィックス デバイス (win32 グラフィックス デバイス) について、これらの機能がハードウェア アクセラレーションを受けているかどうかを確認するには?