問題タブ [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# - C# WPF プロジェクトで SharpDX DirectSound を使用して .wav ファイルを再生するにはどうすればよいですか?
プログラムで再生される .wav ファイルのタイミングを正確に制御できるようにしたいと考えています。また、同時に複数の .wav ファイルを再生できるようにしたいと考えています。一度に 2 つのサウンドを再生できないため、SoundPlayer は十分ではありませんでした。異なるサウンドを連続して再生する場合でも、各サウンド間に約 1/8 秒の遅延があり、これは私が行っていることには受け入れられません。SharpDX を使用してデバイスを追加する方法が見つかりません。
wpf - D3DImage共有リソースを使用したDirectX11/DirectX10のマルチサンプリング(MSAA)
D3DImageを使用してDX11でMSAAを取得しようとしていますが、http://msdn.microsoft.com/en-us/library/windows/に記載されているように、共有マルチサンプリングテクスチャが許可されていないため、不可能のようです。デスクトップ/ff476531(v=vs.85).aspx
実際、私はD3DImageのSharpDX実装を使用しています。これは、アンチアリサスなしで離れることができる限り、DX11とDX10で正常に機能します。
それを解決するためのアプローチは、このスレッドで説明されています:http ://sharpdx.org/forum/5-api-usage/1000-d3d11-problem-with-usage-of-texture2d成功していません。同様の質問をするさらに別のスレッドがあります:マルチサンプリングとDirect3D10/D3DImage相互運用
最後に、問題は、実際、誰かが確認できれば、DX10 /DX11からのアンチエイリアスコンテンツのレンダリングにD3DImageを使用することは絶対に不可能であるということです。
c# - SharpDX: DataStream からの Texture2D の初期化に失敗します (Texture1D は正常に動作しますが)
インメモリ データから SharpDX.Direct3D11.Texture2D を作成しようとしていますが、常に SharpDXException (HRESULT: 0x80070057、「パラメーターが正しくありません。」) が発生します。問題なく作成できる前に、この目的のために Texture1D を使用しました。
コードをこのサンプルに減らしましたが、それでも例外が発生します。
データを渡さずにテクスチャを作成するとうまくいきます。Texture2D の初期化を修正する方法を教えてもらえますか?
image-processing - GPU でビデオ処理を適用する方法
グラフィックカードのプログラミングに問題があります。私は画像処理用のシェーダーを書いています (DirectX 11 と SharpDX を組み合わせて使用しています) が、CPU から GPU への転送は非常に遅く (0.5 秒程度の場合もあります)、Texture2D を使用するよりも高速な方法があるはずです。ビデオを再生するとき、ビデオのすべての画像も GPU に転送する必要があるためです (または、この時点で間違っていますか?)。このプロセスをスピードアップするにはどうすればよいですか?
c# - ピクセル シェーダーのコンパイル エラー
SharpDX で使用するピクセル シェーダーをコンパイルしようとしています。より具体的には、(画像に適用する) エフェクトとして使用します。
tkfxc コンパイラを使用してコンパイルしています。
シェーダー コードは次のとおりです。
コンパイルしようとすると、次のエラーが発生します。
以前にこのエラーを経験した人はいますか? 私はそれを修正する方法がまったくわかりません。
xaml - SharpDX を使用して WinRT でバイト [] として画像を生成する
シンプルな画像を生成して WinRT/XAML で表示しようとしています。そのためには、SharpDX で描画された画像の byte[] が必要です。これまでのアプローチは問題ないように見えますが、結果のバッファは空です。
CopyPixels も試しましたが、ゼロしか生成されませんでした。
誰かが私を正しい方向に向けることができますか?
c# - DirectX / SharpDX の「glReadPixels」のような機能
マウスポイントでピクセルの色を読み取る方法を探しています。OpenGL では、シーン (またはその一部) を描画した後に "glReadPixels" 関数を呼び出すことによって行われました。3D 空間で形状/線を識別するために、バックグラウンドで単純な色選択ルーチンを作成したいと考えています。
では、SharpDX (DirectX10 / DirectX11) で同じことを行うための同等の方法/機能/提案はありますか?
c# - SharpDXおよびD3DImageのパフォーマンスの問題
D3DImageを使用してSharpDXDirectX9サーフェスをホストし、パン、ズーム、およびワールドオブジェクトとの対話を可能にするコントロールがあり、その結果は本当に素晴らしいものです。ウィンドウが最小化されて元に戻された場合、またはユーザーが画面をロックしてからロック解除した場合を除いて、パフォーマンスは実際には驚くほど一貫した60fpsです。ウィンドウがフォーカスを取り戻すと、fpsは約25〜30fpsに低下します。コントロールをアンロードしてコンテナにロードし直してから、60 fpsのBOOMを実行することで、この問題を「修正」できます。
10msに設定されたDispatcherTimerを使用してメインレンダリング関数を呼び出します。以前は、CompositionTarget.Renderingイベントを使用していましたが、DispatcherTimerを使用した場合ほどパフォーマンスは良くありませんでした。私は失われたリソースを正しく処理しているとかなり確信しています。これらの1秒あたりの欠落フレームに関するアイデアはありますか?
編集: 私はこれとまったく同じ問題を抱えています。残念ながら、デバイスの自動リセットを実行しても問題は解決しませんが、同じリセット方法を実行するボタンがある場合、fpsは通常に戻ります。
c# - C++ から C# への構造体の DirectX 配列のマーシャリングが困難
目標: 構造体の C++ (ポインターへのポインター) 配列を C# にマーシャリングします。
C++: CreateVertexDeclaration()
C#:
これを使用してD3DVERTEXELEMENT9
構造を定義しています。SharpDX は、DirectX SDK C++ ヘッダーから直接生成されたマネージ DirectX ライブラリであるため、COM 相互運用との互換性が高いと考えられます。私は実際にすでに 10 個のフックを完全に動作させていますが、これは構造体の配列へのポインターを備えた最初のフックです。
SharpDX の構造定義が機能しない場合に備えて、独自の定義に置き換えてみました。
次の C# メソッド シグネチャを試しました。
注:IntPtr devicePointer
最初のパラメーターを使用しても問題はありません。正常に機能する他の10個のフック用に持っています。
注: これらは Direct3D API フックです。したがって、私のプログラムには、アンマネージド C++ 環境からマネージド C# 環境にマーシャリングする必要があるデータが渡されます。
1:
CreateVertexDeclaration(IntPtr devicePointer, D3DVERTEXELEMENT9[] vertexElements, out IntPtr vertexDeclaration)
結果: 配列には 1 つの要素がありますが、その値はデフォルトです (意味がありません)。これはshort Stream
、short Offset
、Type
、Method
、Usage
、およびUsageIndex
がすべて 0 であることを意味します (列挙型は最初の値を取ります)。
2:
CreateVertexDeclaration(IntPtr devicePointer, ref D3DVERTEXELEMENT9[] vertexElements, out IntPtr vertexDeclaration)
結果: 配列自体は null です。
3:
CreateVertexDeclaration(IntPtr devicePointer, [In, Out] D3DVERTEXELEMENT9[] vertexElements, out IntPtr vertexDeclaration)
1と同じ。メリットなし。
4:
CreateVertexDeclaration(IntPtr devicePointer, D3DVERTEXELEMENT9 vertexElements, out IntPtr vertexDeclaration)
1 と同じで、何も変わりません。デフォルトの構造を取得します。私が電話した場合も同じですnew D3DVERTEXELEMENT9()
。
5:
CreateVertexDeclaration(IntPtr devicePointer, ref D3DVERTEXELEMENT9 vertexElements, out IntPtr vertexDeclaration)
結果は忘れましたが、うまくいきませんでした。実際にフックがクラッシュしたと思います。
6:
CreateVertexDeclaration(IntPtr devicePointer, IntPtr vertexElements, out IntPtr vertexDeclaration)
この #6 か #1/#2 のどちらかが正しいと思われます。私はおそらくこのメソッドの実装を台無しにしましたか?
私はそれでこのコードを使用しようとしました:
しかし、うまくいきません!#1と同じです。整列化された構造体へのポインターは、呼び出した場合と同じように、デフォルトの構造体ですnew D3DVERTEXELEMENT9()
。
7:
CreateVertexDeclaration(IntPtr devicePointer, ref IntPtr vertexElements, out IntPtr vertexDeclaration)
null またはゼロ。有効ではありません。
方法 6 (IntPtr を使用) では、Visual Studio でメモリ領域を表示してみました。次の 50 バイト程度はすべてゼロでした。2
50 個のゼロのフィールドには、おそらく 1バイトがありました。しかし、メソッドに提供された IntPtr から始まるほぼ 49 バイトのゼロでした。
それは問題ではありませんか?提供されたポインターが既に間違っているということではないですか? だから私は間違ったメソッド署名を持っていることを意味すると考えました。問題は、あらゆる種類の可能な組み合わせを試してみた結果、プログラムがクラッシュするか、 を呼び出した場合と同じようにデフォルトの配列が返されることnew D3DVERTEXELEMENT9()
です。
pVertexElements
質問: 構造体の配列を C++ から C# に正しくマーシャリングするための解決策は何ですか? また、現在の署名が正しくないのはなぜですか?
追加メモ: C++ では、この特定の配列の長さはD3DDECL_END のサフィックスによって定義されます。何らかの長さパラメーターを渡さずに、C# で対応する配列の長さを取得する方法がわかりません。
その他の作業フック:
C++:
...
C#:
注: これらすべてのデリゲートに SharpDX 列挙型と構造体を使用していますが、正常に動作します。また、すべて で始まりますIntPtr devicePointer
。
他のフックに渡されたパラメーターのログ:
これに最も似ているメソッド シグネチャCreateVertexDeclaration()
はClear()
. これが私の実装ですClear()
:
c# - 背景としてのカメラ
アプリでノートブック Web カメラ プレビューを使用しようとすると、いくつかの問題が発生しました。
Xaml で 3D モデルの背景としてカメラを使用しようとしています。
そのように言いましょう: - XAML は最上位層であり、ボタンやテキストなどの必要なすべてのコントロールを保持します。- DirectX は、Xaml の背後にあるすべてのものをレンダリングするレイヤーです
Xaml と .NET を使用して、カメラからプレビューを表示できます。残念ながら、プレビューは DirectX レイヤーの上に表示され、すべての 3D オブジェクトをカバーします (これは予期しない動作です)。
私が見つけようとしているのは、その問題の回避策です。
SurfaceImageSource を使用して Xaml-DirectX-Xaml レイヤーの順序を作成する方法がありますが、多くの労力と低レベルのプログラミングが必要です。
その特定の問題の解決策を見つけるのを手伝ってくれることを願っています.