私は DirectX テクノロジの初心者ユーザーです。
ID3D10Texture2D のコンテンツをスクロールするにはどうすればよいですか? bitblt を使用しています。src と dst hdc が同じである GDI デバイス コンテキストの BitBlt のようなもの。
IDXGISurface の ID3D10Texture2D を持っています。スクロールが私の本当の目標ですが、dxgi API には何も見つかりませんでした。
スクロールはかなり簡単です。テクスチャ全体を描画するには、テクスチャを 0、0 から 1、1 にします。代わりに、各 x 座標に 0.5 を追加して、次のようにします。
0.5, 0.0----------------1.5, 0.0
| |
| |
| |
| |
| |
0.5, 1.0----------------1.5, 1.0
テクスチャが幅の半分だけ右にスクロールしたことがわかります。
それが役立つことを願っています!
編集:上記を実行できない場合、同じテクスチャから読み書きできないため、少し行き詰まる可能性があります(一部のドライバーでは可能ですが、未定義の動作です)。したがって、2 つのオプションがあります。
1) レンダー ターゲット テクスチャを作成し、(上記のように) 元のテクスチャをオフセットを使用して新しいレンダー ターゲットにレンダリングします。次に、レンダー ターゲット テクスチャでテクスチャリングします。
2) テクスチャをロック (マップ) し、個々のバイトを新しい位置にコピーします (これは、PCIe バスのコピーのために非常に遅くなります)。
理想的には、1で提案したようにします。ただし、最高のパフォーマンスを得るには、スクロール量を定数として設定し、最初に説明したように頂点ごとにテクスチャ座標をオフセットする「スクロール テクスチャ頂点シェーダ」を設定します。これは、最もパフォーマンスの高い方法です。