問題タブ [direct3d11]

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 投票する
1 に答える
1863 参照

crash - Direct3D11は最後のエラーを取得します

d3d11アプリケーションに何かを実行しましたが、Presentが呼び出された後、WDDMTDRリセットが発生してGPUがクラッシュします。

Present(または描画呼び出しのいずれも!)関数はHRESULTを返すので、問題をどのように見つけることになっていますか?

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

direct3d11 - d3d11 の DrawPrimitiveUP

確認するだけですが、D3D9の DrawPrimitiveUP / 頂点バッファーを使用しない描画方法はすべて、D3D11 から取り除かれているようです。

頂点バッファーを使用しないD3D11 で描画する方法はありますか?

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

render - D3D11 での単一の状態設定の変更

D3D11 の API は少し扱いに​​くいか、正しく使用していないようです。

これは、D3D11 で 1 つのラスタライザーの状態を変更するための最小限の手順であるというのは本当ですか (例として、ワイヤーフレーム モード レンダリングへの変更を使用しています)。

9'sよりずっと長いようです

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

vertex-buffer - 頂点バッファの数が多すぎますか?

D3D11 のような新しい API では、頂点バッファーの使用が強制されます。

静的 (内容は変更されません) または動的頂点バッファー (内容は CPU によって更新および変更可能)を使用できます。

私の質問は、いくつの頂点バッファーが多すぎるのですか? 限界に近づいていることをどのように知ることができますか? すべてのモデルに独自の頂点バッファーが必要ですか? 必要に応じて更新しながら、たとえば 8 個の頂点バッファーをすべてのモデル間で共有する必要がありますか?

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

graphics - IDXGISwapChainとID3D11Device/ID3D11DeviceContextを使用して別のウィンドウに表示するにはどうすればよいですか?

以前、ツールを作成するときは、D3Dバージョン9を使用しました。このバージョンでは、Present()の呼び出しでターゲットウィンドウと長方形を取得できるため、1つのデバイスから多くの異なるウィンドウに描画できます。これは、D3Dを使用してデスクトップアプリケーションを高速化したり、ゲームではなくツールを構築したりする場合に最適です。

また、以前にD3D11を使用してゲームレンダラーを構築しました。これは、状態管理とスレッドインターフェイスが適切に設計されており、(D3D 10とは対照的に)まだかなり一般的なD3D9レベルのハードウェアをターゲットにすることもできるためです。 、10以上のみをターゲットにできます)。

ただし、ここでD3D11を使用してツールを作成したいと思います。残念ながら、D3D11CreateDeviceAndSwapChain()から戻ってきたIDXGISwapChainは、そのHWNDを「記憶」しているようで、そのウィンドウにのみ表示したいと考えています。これは非常に不便です。ウィンドウが多数あり、それぞれにかなり単純なグラフィックを描画する必要があり、WM_PAINTに応答する場合のみです(これもゲームではなくツール用です)。

私がやりたいのは、バッファRAMを節約することです。具体的には、以前は、デスクトップのサイズである単一のバックバッファーを作成できました。これは、すべてのレンダリングニーズに対応できることがわかっていたため、割り当てられた単一のコピーになります。オーバーラップするウィンドウが10個ある場合でも、それらはすべて同じバックバッファーを介してレンダリングされるため、最初の割り当てを超えてメモリを浪費することはありません。スワップチェーンではないテクスチャを作成し、それらを「レンダリングターゲット」として使用することはできますが、ビットマップを読み戻してコピーすることなく、任意のクライアントウィンドウの任意の長方形に表示する良い方法を見つけることができません。 DIBSection、これは本当に非効率的です。また、多くのスワップチェーンを作成し、それらに同じバックバッファを共有させる方法はありません。

私ができる最善の方法は、ウィンドウごとに1つのスワップチェーンを作成し、各スワップチェーンのバックバッファーのサイズを実際に小さくすることです。ただし、スワップチェーンにレンダリングする場合は、ウィンドウに合わせてサイズを変更します。ただし、ターゲットのサイズ変更は「無料」の操作AFAICTではないため、これは非効率的なようです。それで、もっと良い方法はありますか?

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

geometry - PIXで歪んで見える画面スペースの正方形

画面全体を覆う正方形を作成するシンプルな関数があり、後処理効果を適用するために使用していますが、それが数え切れないほどのエラーの原因であることがわかります。

PIXでコードを実行すると、次のメッシュが表示されますが、正方形はまっすぐで画面を覆っているはずです。

PIXキャプチャからのメッシュ情報

私の頂点シェーダーは変換を行わず、位置情報をピクセルシェーダーに渡すだけです。

正方形を作成する関数は次のとおりです。

正方形をレンダリングすると:

編集:実行中の頂点シェーダーを追加しました

これがPIXの頂点出力です。

PreVS:

preVS

PostVS:

postVS

これが、頂点0のデバッグを選択したときに生成された分解PIXです。

入力アセンブラも追加しました。

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

c++ - Direct3D11(C ++):レンダリング(基本)の質問

私はD3D11を使ったゲームプログラミングの基本についての本をフォローしています。Direct3Dの絶対的な基本を理解しました:)

しかし...質問があります。この本では、私は常に一度に1つのデモを作成する必要がありました。今、私はそれを使って2Dゲームを作ろうとしています。悪い習慣に慣れたくないのでアドバイスが必要です。

この本では、常に(texcoordとpositionメンバーを使用してVertexPosを構築する)OR(XMFLOAT3ポジションメンバーのみを使用してVertexPosを構築する)を定義する必要がありました。私が作成しているゲームでは、テクスチャのないソリッドサーフェスとテクスチャのあるサーフェスの両方を描画できるようにしたいと考えています。これを効率的に行うことは言うまでもなく、これを行う方法がわかりません。

これが私のレンダリング関数です:

では、複数の頂点バッファー、入力レイアウト、シェーダー、ブレンダーなどを使用して、これをどのように効率的に処理する必要がありますか?

それらの複数のバージョンを作成し、Draw呼び出しの後に入力アセンブリ、シェーダーなどをリセットするように設定する必要がありますか?またはこれは機能しません/これは効率的ではありませんか?

ありがとう :)

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

c++ - Direct3D11(C ++):定数バッファーのテクスチャ座標を更新しますか?

Direct3Dを使用してかなり基本的な2Dエンジンを作成しようとしています。

画像のかなり静的な動作をすべてオブジェクトに格納するLoadImage()関数を作成しました。(シェーダー、Vertexbuffers、サンプラーなど)

定数バッファ内の行列を使用して頂点の配置を行うことを計画しています。

ただし、DrawImage()関数も必要です。この関数には、テクスチャのどの部分を描画(クリップ)するかを指示するパラメータが含まれているため、テクスチャの座標を更新する必要があります。頂点バッファはすでに事前定義されているので、頂点シェーダーに送信される定数バッファを介してテクスチャ座標を更新する方法があるかどうか疑問に思いました。

以下のコードをご覧になりたい場合は、私の質問が十分に明確であることを願っています。

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

c++ - ある程度太い線の描き方

新しい Direct3D でさまざまな太さの線を描画する最良の方法は何ですか?

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

c++ - オーバーレイの作り方

Direct3D11 (C++) でオーバーレイを作成する方法を知りたいです。(フルスクリーンで別のプログラムにコンテンツをレンダリングする xfire ゲーム チャットのように)

Direct3D11 の基本は知っていますが、プログラムが相互に通信する方法がわかりません。それとも、それは必要ありませんか?

誰でも私を助けることができますか?

ありがとう。