問題タブ [direct3d]

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

directx - Direct3D カメラのアスペクト比/スケーリングの問題

Direct3D アプリケーションを作成するために SlimDX/C# を使用しています。テキストボックスの方法に従ってカメラを構成しました:

Matrix.RotationYawPitchRoll描画と回転方法はすべてまともmesh.DrawSubset(0)です。他のすべては正常に見えます。

私の問題は、私の 3D メッシュ (薄い正方形のボックス) を横から見て、垂直に立てたときに、水平のときよりも厚く見えることです。を 1 に変更しようとしましたが、AspectRatioもっと悪いです。で、試行錯誤してみたところ、AspectRatioが2.6くらいで普通に見えることがわかりました。それはなぜですか、何が間違っている可能性がありますか?

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

directx - MaxTextureRepeatの制限はどの時点で機能しますか?

Direct3Dでピクセルシェーダーを実行する場合、MaxTextureRepeatによって課されるテクスチャ座標の制限は、Tex2D()などのテクスチャルックアップ関数の呼び出し中にのみ問題になりますか、それともシェーダー内でテクスチャ座標にアクセスするたびに機能しますか?

テクスチャルックアップ関数に渡す前に、テクスチャ座標でfrac()のようなものを呼び出すことによって、MaxTextureRepeatの制限を回避できるかどうかを知りたいです。

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

browser - フルスクリーン Direct3D アプリケーションの Web ブラウザ

フルスクリーンの Direct3D アプリケーションで動作する Web ブラウザが必要です。たとえば、Valve のソースベースのゲーム (のようなもの) は、サーバーに参加するときに MotD ウィンドウでそれを行います。どこを見るかのヒントはありますか?

0 投票する
3 に答える
1158 参照

wpf - オフスクリーン サーフェスにレンダリングするときにピクセル シェーダーを使用できますか?

ここで説明されているように、新しい D3DImage を介して、私が持っているいくつかの D3D コードを WPF と統合することを検討してい ます。

私の質問はこれです:ピクセルシェーダーはオフスクリーンサーフェスで機能しますか?

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

direct3d - 頂点と失われたデバイス

Direct3D アプリケーション (マネージ) では、デバイスを紛失するたびに頂点バッファーを再作成する必要がありますか?

私が開発しているアプリケーションは、Windows CAD アプリケーションです。ゲームではありません。3D モデルが変更されたときに頂点バッファーを生成できると考えていました。しかし、デバイスを紛失したときにやり直す必要がありますか?それとも古いデバイスの頂点バッファを再利用できますか?

0 投票する
5 に答える
2196 参照

direct3d - 3D グラフィックスにおける「ポリゴン」とは何を意味しますか?

古いDirect3Dの本は言う

「...フレームあたり 2000 ~ 4000 ポリゴンを表示しながら、ハードウェア アクセラレーションで許容できるフレーム レートを達成できます...」

Direct3D の 1 つのポリゴンとは何ですか? それらは 1 つのプリミティブ (インデックス付きまたはその他) または 1 つの三角形を意味しますか?

0 投票する
4 に答える
294 参照

graphics - 3D グラフィックス ライブラリでの I セクションのモデリング

Direct3D を使用して、鉄骨構造で使用される多数の I 断面を表示しています。シーン全体に、これらの I セクションのインスタンスが何百もある可能性があります。

私はこれを2つの方法で行うことができます:

Iセクション

方法 A を使用すると、サーフェスが少なくなります。ただし、背面カリングをオンにすると、サーフェスは片側からしか見えなくなります。背面カリングがオフになっている場合、フランジ (水平プレート) とウェブ (垂直プレート) が間違った順序でレンダリングされる可能性があります。

方法 B は正しいように見えます (背面カリングをオンにしておくこともできます) が、私のモデルでは I セクションのプレートの厚さは重要ではなく、各サイドに個別の三角形ストリップを作成する必要は避けたいと考えています。プレート。

より良い解決策はありますか?DrawIndexedPrimitives の特定の呼び出しに対してのみ背面カリングをオフにする方法はありますか? プラットフォームに中立な回答があれば、それもお願いします。

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

c++ - Direct3Dデバイスの状態を保存する

州には、少なくとも次のものを含める必要があります。

  • SetStreamResource()を介して設定されたすべての設定
  • インデックス

Draw()関数がSetStreamResourceを呼び出し、インデックスを設定し、最終的にDrawIndexedPrimitive()を呼び出すクラスがあります。Draw()が戻る前にデバイスの状態を復元したいと思います。

GDIのSaveDC()/ RestoreDC()に沿ったものを探しています。

0 投票する
3 に答える
2333 参照

3d - XNA でのウィンドウ システムのレンダリング戦略 (RenderTarget のパフォーマンス)

現在、XNA ゲーム用のウィンドウ システムをゼロから作成しています。私は主に Windows 向けに開発していますが、将来どのプラットフォームをサポートするかは誰にもわかりません。パフォーマンスのセマンティクスは似ているはずなので、ネイティブ Direct3D についてこれを知っている場合は、自由に答えてください。可能であれば、ターゲット プラットフォームが X-Box 360 である場合に何が変わるかを検討してください。

私は順調に進んでいますが、ウィンドウを正確にレンダリングする方法がわかりません。私は4つのアプローチを思い付きました:

  • すべてのコントロールを画面に直接レンダリングするだけです。これが私が今していることです。コントロールは、半透明でない限り、状態をブレンドしてアニメーション化できます。任意の数の状態の間でアニメーション化する良い方法が見つかりませんでした (現在、ボタンアップからボタンダウン、マウスアウトからマウスオーバーにアニメーション化されているボタンが無効になっているとします。最後の状態から新しい状態にスムーズにブレンドします。このアプローチでは、最後のアニメーションが終了した後に 1 つのアニメーションが再生される場合にのみ機能します。そうしないと、アニメーションにジャンプが発生します。

  • 各トップレベル ウィンドウとすべてのコントロールをレンダー ターゲットにレンダリングし、それを使用して半透明のトップレベル ウィンドウを画面にレンダリングします。これにより、トップレベルの作業で半透明になり、管理が容易になりますが、アニメーションの内容は変わりません。

  • 各コントロールをレンダー ターゲットにレンダリングします。レンダー ターゲットは、コントロールがダーティになった場合 (つまり、アニメーション化する必要があるか、テキストが変更された場合) にのみ更新されます。このようにして、コントロールごとの半透明が機能します。

  • 前と同様ですが、アニメーションの問題を解決することに加えて、各コントロールに 2 番目のレンダー ターゲットを用意します。アニメーションが開始するたびに、レンダー ターゲットを交換して、アニメーションが開始したときの状態を取得し、それを目的の状態とブレンドして他のレンダー ターゲットに入れます。これにより、以前のアプローチよりもオーバーヘッドが増えることはありません。レンダー ターゲットの数が 2 倍になり、任意のフレームで (最大で) 1 つだけがレンダリングされます。しかし、ここで問題が発生します。これを機能させるには、「古い」レンダー ターゲットのコンテンツを保持する必要があります。これは、Windows では良好なパフォーマンスで動作するはずですが、X-Box 360 ではパフォーマンスに重大な影響があるようです。一方、「保存」ビットは、アニメーションがアクティブな間のみ必要です。

そして、実際の質問が来ます。明確にするものは何でも大歓迎です。パフォーマンスの問題については、これはゲームのウィンドウ システムにすぎないことを覚えておいてください。ゲームの背後にあるゲームは、多くのレンダー ターゲットを使用し、パフォーマンスも低下させる可能性があり、ウィンドウ システムよりもはるかに多くの可能性があります。最悪の場合、画面上にそれぞれ 20 ~ 40 のコントロールを持つ 5 つのトップレベル ウィンドウがあるとします。

  • これらのアプローチのどれをお勧めしますか?またその理由は? もちろん、別のアプローチを自由に追加してください。
  • 200 個または 400 個のレンダー ターゲットを利用できる場合、各フレームに 20 個しかレンダリングされない場合、パフォーマンスに影響はありますか?
  • PreserveContents のパフォーマンスへの影響は、X-Box 360 では本当に悪いのでしょうか? Windowsではどれくらい悪いですか?
  • RenderTarget2D.RenderTargetUsage プロパティに書き込むことができます。PreserveContents を必要に応じてのみ有効にするために、実行時にこれを切り替えることは良い考えですか?
  • ボタンの上にマウスを移動し、マウスを移動してから再び移動するなど、特定の状況でコントロールアニメーションがジャンプすることを (プレイヤーとして) 気にしますか?あなたより遅い?
0 投票する
2 に答える
992 参照

mfc - Direct3D MDI プロジェクト: MFC または .NET?

私は、ネイティブとマネージドの両方のアプローチが良いアイデアのように聞こえる新しいプロジェクトを見ています。これは、MDI インターフェイスをサポートする Windows デスクトップ アプリケーションです。クライアント領域では、Direct3D が広く使用されます。プロジェクトの開発者は、C#、C++/CLI、および MFC のスキルを同等に持っています。

MFC の利点:

  • ドキュメント/ビュー アーキテクチャ
  • ほとんどの Direct3D オンライン リソースは、依然として C++ を使用しています。

マネージド コードの利点:

  • .NET フレームワーク
  • C#

上記のリストにさらに何を追加できますか? これを燃やさないでください。2 つのリスト。それらに追加するだけです。

注: 私には (IDE とデバッグに関係する) 混合モードを使用しない十分な理由があります。だからそれを数えてください。