問題タブ [directxmath]

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 に答える
1362 参照

c++ - DirectXMath XMStore/load の回避

私は以前にやったことがOpenGLあり、現在いくつかを学んでいDirectX11ます。新しい数学ライブラリの機能の 1 つは、ベクトルと行列の Load/Store メソッドが存在することです (たとえば、 http://msdn.microsoft.com/en-us/library/ee415635( v=vs.85 ).aspx など)。 )。

私にとって、これは私がそれらを使用したいときに各ベクトルと行列を保存/ロードしなければならないという多くの癖があります.

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

c++ - 3D ワールドの交点の計算

世界、ビュー、および投影行列を使用して、世界の地形の交点を計算するにはどうすればよいですか。ここで、交差点を 2D カーソル座標から計算し、カーソルの背後にある地形の部分を交差点にする必要があるとしましょう。したがって、マウスを画面のちょうど中央に置くと、2D ビューは次のようになります。ここに画像の説明を入力

このテストは、「Y」座標がわかっている場合は簡単ですが、ここで「Y」座標がわからないとしましょう (山が存在する可能性があります)... この問題を効率的に解決する方法の手がかりはまったくありません. しかし、これは間違いなく可能です。私は CryEngine をチェックしましたが、私が見ることができるものから、武器を発射するときに弾丸の衝突ポイントが地面に表示されます。チュートリアルなど、どんな助けでも大歓迎です。

ありがとうミカエル。

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

matrix - Worldviewpoj 範囲

今日、コードをデバッグしたところ、worldviewproj が巨大であることがわかりました (読みにくくて申し訳ありません)。

ここに画像の説明を入力

{ 4.91479736e+010, -6.29708390e+010, -863636224, 432034112 }

これが最初の行です。アプリケーションが何も表示しないため、コードをデバッグしようとしています。私の世界行列は恒等行列であり、ビュー行列も巨大です。

私の質問ですが、worldviewproj マトリックスの範囲はどのくらいですか? それとも、それが大きくて別のものであることは正常ですか?

編集:投影行列のfovYを間違って設定していたことがわかりました:)しかし、...私が言ったように、ビュー行列が問題になりました:(ビュー行列はすべてのエントリに-431602080を持っています

EDIT 2:私は自分自身に顔を向けることができます!! 計算された行列をカメラ クラスのビュー変数に格納するのを忘れていました :|

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

c++ - XMFLOAT3 と XMVECTOR を使用したメモリ例外

D3D の Camera クラスに Pitch/Yaw を実装しようとしていますが、Pitch() 関数が「Access Violation reading location 0x0000008C」をスローします。

少しグーグルで調べたところ、16ビットのアライメントのため、クラス/構造体でXMVECTORを使用できないことがわかりました。しかし、私はすでにそれを知っていたので、それが XMFLOAT3 として宣言されていることを再確認しました。

問題は、Camera クラスの他のすべての関数 (ビュー マトリックスの更新など) で、例外をスローしないことです。それはちょうどその1つの機能にあります!

したがって、関数をクラッシュさせるクラス変数を宣言する方法は次のとおりです (ただし、すべての変数で関数がクラッシュし、同じ方法で定義されます)。

Pitch 関数を宣言する方法は次のとおりです。

x64でもまったく同じ結果が得られますが、アーキテクチャとしてx86も使用しています(メモリの場所を除く:D)。I も DirectXMath ライブラリも、"mRight" の x、y、および z 値にアクセスできません。私の場合は「mRight.x」、DirectXMath の場合は「__m128 x = _mm_load_ss( &pSource->x );」です。

いくつかの新しいデバッグ結果: これは、WM_MOUSEMOVE イベントから「任意の」関数を呼び出したときに発生します。私の関数 Walk() でさえ、キーが押されたときに呼び出すと完全に機能します。

これまでで最も奇妙なこと!

助けてくれてありがとう!

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

c++ - XMMATRIX は 2D 変換に効率的ですか、それともカスタムの 3x3 マトリックス スイートを作成する必要がありますか?

Direct3D 11 の上に高性能の UI レイアウト エンジンを構築しています。このアプリケーションは、x64 をターゲットとする Visual Studio 2013 を使用して開発されており、Windows 7 (プラットフォーム アップデートあり) 以降を対象としています。

XMMATRIXビジュアル ツリーの 2D 要素に対して行列変換を行う必要があり、DirextXMath の組み込み (SIMD 最適化)とその関連関数を使用することが 2D の使用に効率的かどうか疑問に思っています ( XMMATRIXet al が 4x4 であるのに 3x3 行列のみが必要なため)。 )、または独自の行列クラス/関数をロールする必要があるかどうか(おそらくSIMD固有のコードはありません)。

全体を通して 4x4 行列は多くの冗長な計算が実行されることを意味するように思えますが、非 SIMD 3x3 行列の作業と比較すると、SIMD 命令によって相殺される可能性があります。


編集:「時期尚早の最適化はすべての悪の根源である」(およびその派生物)についてのコメントは、ここでは不要です(皮肉なことに時期尚早です。プロジェクトまたは私について何も知らないからです)。質問は、私がいくつかの視点に興味を持っていること、または詳細を知っていることを要約しています。

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

c++ - DirectX11 で行列の乗算を単純化するにはどうすればよいですか?

人間が読みやすいように、次のステートメントを簡略化できますか? 要件の調整に関して、次の乗算を段階的に行うことはできますか?

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

c++ - DirectXMath による行列乗算

チュートリアルhttp://3dgep.com/introduction-to-directx-11を行いました。

チュートリアルでは、3 つのマトリックス (投影、ビュー、およびワールド マトリックス) が頂点シェーダーに送信され、そこで乗算されます。

3 つの行列を乗算して、頂点シェーダーに送信する必要がある行列を 1 つだけ取得したいと考えています。

それらを XMMatrixMultiply() 関数で乗算しようとすると、アクセス違反エラーが発生します。

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

c++ - XMVECTOR を float で乗算できません

チュートリアルでうまくコンパイルされている DirectX チュートリアルからこれらの行コードを取得しました。

しかし、私自身のプロジェクトではエラーが発生します:

エラー 4 エラー C2677: バイナリ '*' : タイプ 'DirectX::XMVECTOR' を取るグローバル演算子が見つかりません (または、受け入れ可能な変換がありません) d:\projects\3dtestproject\3dtestproject\application.cpp 76 1 3DTestProject

これは行です(明確でない場合):

directxmath.h が含まれています。