問題タブ [sharpdx]
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# - SharpDx は、Texture2D、SamplerState の Shader 変数名を取得します
Texture2D と SamplerState の変数名を取得できるかどうか疑問に思っています。私はエフェクト フレームワークを介してそれらを取得できることを知っています。しかし、私はこのフレームワークなしで方法を探しています。Constantbuffers (ShaderReflection) の場合と同様です。このようなHLSLコードを作りたい
EffectsFrameworkなしでVariableNamesにアクセスする方法を知っている人はいますか?
visual-studio-2012 - Windows ストア アプリ プロジェクトで参照されるクラス ライブラリで使用されるサード パーティ ライブラリの参照の必要性
VS2012 ソリューションには 2 つのプロジェクトがあります。
- Windows ストア アプリ;
- クラス ライブラリ (Windows ストア アプリ用);
1 番目のプロジェクトは 2 番目のプロジェクトを参照しています。2番目のプロジェクトには、サードパーティのライブラリへの参照があります (私の場合は SharpDX ライブラリです)。
ビルド時に 2 つのエラーがあります。
エラー 1アセンブリまたは Windows メタデータ ファイル 'SharpDX.dll' {最初のプロジェクト パス} を解決できません
エラー 2タイプ ユニバースはアセンブリを解決できません: SharpDX、バージョン = 2.5.0.0、カルチャ = ニュートラル、PublicKeyToken = null。
SharpDX.dll ライブラリへの最初のプロジェクト参照に追加すると、エラーは発生しません。
しかし、lib が使用されていないプロジェクトで lib を参照する必要があるのはなぜですか?
WinRT の機能ですか、それともバグですか?
VS2012 のこのような動作については、いくつかの苛立ちがあります。
c# - SharpDX/Direct2D を使用してテキストを右揃えにする
テキストを描画するコードがいくつかあります。
テキストは、ターゲットの四角形の左上から描画されます。テキストを右揃えにする方法はありますか?
wpf - 遅延を発生させずに長い計算にシェーダーを使用する
DirectX 11 で Compute Shader を使用して、単純ではあるが高価な計算を実行しようとしています (Mandelbrot Set を考えてください)。計算結果はテクスチャに配置され、オーバーラップしません。1 ~ 10 秒かかると予想されるため、リアルタイムではありませんが、終了するとすぐに UI に表示されます。
http://directx4wpf.codeplex.com/経由で WPF と SharpDX を使用しています。そのライブラリには、RenderScene 関数を備えた DX11 ビュー オブジェクトがあり、DX レンダリング関数が呼び出され (コンピューター シェーダーを含む)、メイン スレッドで実行され、私の理解では、できる限り頻繁に呼び出されます (FPS を最大化しようとします)。 )。明らかに、コンピューター シェーダーを固定するオプションはありません。メイン スレッドが残りの UI と共にブロックされ、GPU も使用している場合は OS の残りの部分もブロックされるからです。
問題は、アプリケーションの残りの UI に遅れを生じさせずに、これらの計算をどのように実行すればよいかということです。
これが純粋に CPU で実行される場合は、別のスレッドを実行するだけです。ただし、GPU の初歩的な理解では、GPU はスケジューリング/コンテキスト切り替えにあまり適していないという印象を受けています。したがって、別のスレッドで計算を実行しても (DX11 で遅延レンダリングを使用)、計算が完了するまで GPU がブロックされます。あれは正しいですか?
計算シェーダーの作業を小さな断片 (約 8000 スレッド) に分割しようとしました。これは、基礎となるジオメトリがなくても実行可能です。計算シェーダーを呼び出すたびにオフセットを追加するだけです。膨大なオーバーヘッドがあるため、実際には機能しません。実際、(計算シェーダーを連続して N 回呼び出すことによって) 作業を N 個に分割すると、N 倍の直線的な速度低下が発生するようです。 、または GPU の使用に関する避けられない事実です。
そのようなシナリオでどのように進めるかについて提案がある人はいますか?おそらく似たようなことを行うサンプルプロジェクト、または読むべき良いリソースですか? 私は誤った仮定をしていますか?
graphics - 「単一インスタンス」のハードウェア インスタンス化の欠点
静的メッシュとアニメーション化されたメッシュ (アニメーション化された骨格を含む) を使用して 3D グラフィックス アプリケーション (SharpDX を使用) を作成しています。フレームごとに 1 回だけレンダリングされるメッシュもあれば、何度もレンダリングされるメッシュもあります。レンダリングを高速化するために、ハードウェアのインスタンス化を利用する予定です。
インスタンス化されたレンダリング ルーチンとインスタンス化されていないレンダリング ルーチンを実装し、メッシュごとに適切なものを選択するよりも、すべてのメッシュに対して単純にインスタンス化されたレンダリングを使用する方が簡単であることに気付きました。
ターゲット ハードウェアがハードウェア インスタンス化をサポートしていると仮定すると、ハードウェア インスタンス化を使用してすべてのメッシュを描画することに欠点はありますか?それらがフレームごとに 1 回しか発生しない場合でも?