問題タブ [directx-10]
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++ - HLSL 効果の管理
この例では、私がWorldクラスを持っているとしましょう。世界にはモデルのコレクションがあります:
モデルは、車、ボール、山、立方体など、アプリケーション内のすべてのエンティティの抽象クラスになります。
問題は、そのモデルの効果を管理するためのベスト プラクティスは何かということです。base1.fx、base2.fx、base3.fx、bas4.fx の4 つのエフェクト ファイルがあるとします。それぞれにクラス インターフェイスがあり、モデルにバインドされる可能性があります ( IBaseEffect1、IBaseEffect2、IBaseEffect3、IBaseEffect4 )。
ここで、各モデルを独立したものと見なし、次のようにする必要があります。
モデルに効果を管理する機能がある場合、次のようにします。
これは私のエンジンの実際の解決策です。
または、効果を独立して管理し、次のようなことを行うことをお勧めします。
等...
たぶん、私の視点全体が間違っているので、別の方法で作成する必要がありますか?
directx-10 - 深度ステンシルとシャドウ リソースが空です
シャドウ マッピングを機能させるために約 3 日間費やした後、シャドウ マップをシェーダーに渡すのに問題が発生しました。
最初に深度ステンシルとリソース ビューを初期化し、次に深度ステンシルに描画します (と思います)。私が見つけている問題は、深度ステンシルに関連付けられたデータがないことです。
Pix のリソース ビューまたは深度ステンシルにデータが表示されません。深度ステンシルの画像をファイルに保存できません (非シャドウ深度ステンシルを使用しています)。DrawSceneShadow() を呼び出して rendertarget にレンダリングし、必要なものを取得できます。
どんな助けでも感謝します。
初期化する
シーンをレンダリング
directx - CPU 書き込みアクセスで Texture2D 配列を作成する
CPU 書き込みアクセスで Texture2D 配列を作成しようとしています。詳細には、私が使用しているコードは次のようになります。
ただし、これは E_INVALIDARG で失敗します。同じ寸法 (つまり 32x32x2) とパラメータで 3D テクスチャを作成するとうまくいきますが、この場合は望ましくありません。この設定が有効ではない理由を誰かが知っていますか?
directx - DXUT を使用した DirectX サンプル Direct3D デバイスの作成に失敗しました (デバッグのみ)
ここで非常に奇妙な問題が発生しました。DirectX サンプル ブラウザーから DXUT DirectX 10/11 チュートリアルを実行しようとしています。それらは正常にビルドされますが、「Direct3D デバイスの作成に失敗しました」というエラー警告がトリガーされるため、デバッグ モードで実行することはできません。リリースモードで実行できるので、これは奇妙です。しかし、最も奇妙なことは、それらがデバッグ モードで実行されていたことです。実行した日は何も変更せず、次の日は変更しなかったことを誓います。友人もまったく同じ問題を抱えており、ほぼ同時に発生しました。
誰かがこの問題に遭遇し、解決策を知っていますか、またはおそらくそれが明らかな以上に起こっている理由を知っていますか?あなたがそれを拾わなかった場合、私は DirectX 11 対応カードを持っています.
ありがとう。
vector - 特定のポイントを中心にD3DXVECTOR3を回転させる
これはおそらく非常に単純なことですが、Direct Xに関する私の知識は、私が達成しようとしていることと同等ではありません。
今のところ、私は地形を動き回る乗り物を作ろうとしています。車両の周囲に正方形(4 D3DXVECTOR3ポイント)を作成して、車両に地形を認識させようとしています。各ポイントは、地形の高さを検出し、それに応じて車両を調整します。
車両は、Microsoftのサンプルコードから派生した単純なオブジェクトです。ワールドマトリックス、座標、回転などがあります。
私が達成しようとしているのは、これらのポイントを車両と一緒に動かし、そのときに回転して、高さの違いを検出できるようにすることです。これには、車両が移動するたびにポイントを更新する必要がありますが、ポイントを適切に回転させる方法を一生理解することはできません。
要約すると、原点(私の車両の座標)を中心にベクトルを回転させる簡単な方法を探しています。
これらのポイントは車両の車輪の近くにあるため、機能した場合は、車両のy軸の回転に関係なくそこに留まります。
これが私が試したことです:
その結果、ポイントが狂ったように回転して制御不能になり、マップを離れました。
BoxPointは、回転しようとしているベクトルを指します。車両はもちろん回転の原点です。RotationYは回転した量です。
これは、この正方形の4つのベクトルのうちの1つのコードですが、1つの書き込みを取得すると、残りはコピーアンドペーストであると想定します。
私が何を試しても、ポイントが動かないか、マップを完全に離れたままスパイラルが制御不能になります。
これが私のオブジェクトクラスのスニペットです
D3DXVec3TransformCoordを使用してこれを行うことが可能かもしれないと思っていました
c++ - Alt タブで DirectX 10 ウィンドウを最小化する
DirectX 10 アプリケーションで、フルスクリーンからの Alt タブ操作を適切に処理できるようにしようとしています。全画面表示からタブを切り替えると、アプリケーションは自動的にウィンドウ モードになります。
WM_ACTIVATEAPP をリッスンして、プログラムを手動で最小化および最大化しようとしました。動作しますが、既に動作していたプログラムの他の機能 (全画面表示とウィンドウ表示の切り替え) が壊れます。Alt タブから復元した後、最初に全画面表示から切り替えようとすると、黒い画面が点滅して全画面表示のままになり、2 回目には WM_ACTIVATEAPP がトリガーされ、適切にウィンドウ モードに入る代わりにプログラム全体が最小化されます。 .
以下は私が使用しているコードです:
WM_SIZE:
WM_ACTIVATEAPP:
ウィンドウ モードの切り替え要求時:
リサイズバッファ:
ウィンドウを最小化しながら、DirectX 10 でウィンドウ表示と全画面表示を切り替える機能を維持するにはどうすればよいですか?
c++ - NULL ポインター、初期化されているようだと思った
私は得る
そしてそれは次を指します:
「atlcomcli.h」で
私が理解していることから、どこかでポインターを初期化するのを忘れていましたが、それらはすべて初期化されているようです。
「CComPtr」の代わりに通常のポインターを使用すると、D3DFont.cpp の「D3DFont::Draw」の「font->DrawTextA」で「Access Violation Reading Location」がスローされます。
そして、上記の関数の私の使用:
何を見逃す可能性がありますか?
'D3DX10CreateFontIndirect' は 0x8876086C をスローします。意味がわかりませんが、いくつかの Google スレッドは d3dDevice に関連しているので、関連しているに違いないと思います。詳細がわかり次第更新します。
directx - 構造化バッファを使用した Direct3D 10 ハードウェアのインスタンス化
インスタンス データごとに構造化バッファを使用して、Direct3D 10+ でハードウェア インスタンス化を実装しようとしていますが、これまで使用したことがありません。
頂点ごとのデータとインスタンスごとのデータを頂点シェーダーの 1 つの構造に結合するときにインスタンス化を実装する方法を理解しています。つまり、2 つの頂点バッファーを入力アセンブラーにバインドし、DrawIndexedInstanced 関数を呼び出します。
ハードウェアのインスタンス化で構造化バッファを使用する場合に、入力アセンブラをバインドしてドローコールなどを行う手順を誰か教えてもらえますか? どこにも良い例が見つからないようです。
構造化バッファは ShaderResourceViews としてバインドされていると理解していますが、これは正しいですか?