問題タブ [slimdx]

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 投票する
5 に答える
13118 参照

c# - Direct2D / GDI+ と遅い Windows フォームの描画 - どうすればよいですか?

私は Visual Studio 2008、.NET C# 2.0 ~ 3.5、および Windows Forms を頻繁に使用していますが、GDI+ ではコントロールの描画が非常に遅いことに気付きました。私は画像 (JPG、GIF など) をあまり扱っていないことに注意してください。画像は、特定の場所のアイコンとしてのみ使用されます。これは実際には描画が遅いコントロール/フォーム/その他です。

問題は、コントロールが描画されているのを確認でき、一見簡単に見えるコントロールのセットが描画されるまでに数秒かかる場合があることです。つまり、その遅れと恐ろしい。

いくつかのラベル (40 ~ 50) をフォームに配置し、F5 キーを押して実行し、それらが描画されるのを待つ必要があるテストを行いました。繰り返しますが、ラグがあり、あまり良い経験ではありません。

したがって、この問題に対処する可能性のある WPF がありますが、私/私たちは WPF に移行する準備ができていません。そのため、回避策や修正を探していて、Direct2D に出くわし、他のライブラリを読んでいるときに見つけました。

私は少し困惑しているので、これらの質問をしてください:

1) まず、私が欲しいのは、GDI+ をより高速でハードウェア アクセラレーションされたアプローチに置き換えるための、かなりきちんとしたシンプルな方法です。WPF に移行せず、すべての Windows フォーム コードを書き直さなくても、それを行うことは可能ですか?

Direct2D で何かを読むときはいつでも、描画用のコードを手動で記述する方法を教えてくれる、通常はひどい C++ コードの長いブロックが表示されます。私はそれを望んでいません。

2) ネットで読んでいるときに、SlimDX に出くわしましたが、使い方がわかりません (書いている時点ではあまり試していません)。既に GUI アプリケーション (Windows フォーム、標準 C# コード) を持っているとしましょう。

私の問題は、既に作成した Windows Forms ソフトウェアで SlimDX、Direct2D、またはその他の類似のものを使用できるかどうか、また可能であればその方法を教えてくれる例やそのようなものが見つからないことです。

あいまいすぎないことを願っています=)

==編集== 2010-09-22

私は実際のアプリでいくつかのテストを行い、これに遅いものの1つを分離しました:

UserControl の一部のラベルにテキストを追加すると、テキストに合わせてコントロールのサイズが変更されます。たとえば、含まれている GroupControl は、ラベルの .Text プロパティに追加されたばかりのテキストのサイズに少し適応します。

約 10 個のラベル コントロールがあります。ラベルが初めて更新されてサイズが変更されると、プロセス全体に約 500 ミリ秒かかります。ラベルが 2 回目に更新され、サイズが変更されない場合、約 0 ミリ秒かかります。

==編集2== 2010-09-22

スローダウンの 1 つを見つけました。次に、文字列を Text-property に追加すると、追加されるテキストの文字列の長さが更新前のテキストと異なる場合、処理が遅くなります。

DevExpress ライブラリを使用しており、LabelControls を AutoSizeMode に設定できます。これを「なし」に設定すると、前のテキストとは長さが異なるテキストを追加するときにラグがなくなります。この問題は、AutoSize = true/false 設定もある通常の Label コントロールでも同じであると思います。

ただし、これは「回避策」ですが、それでも私の主張を証明しています。サイズ変更時に非常に遅く、かなり不自由です。

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

c# - SlimDXとDirectSound(C#)でサウンドを再生する

(これが重複している場合はお詫びします...私は投稿しましたが、実際にフォーラムに到達したという証拠は見られませんでした)

SlimDXDirectSoundを動作させようとしています。これが私が持っているコードです。それはwavファイルから二次バッファを満たし、次にスレッドループで、バッファの下半分または上半分を交互に満たします。

バッファの最初のロードを正常に再生します。AutoResetEventsは必要なときに起動し、バッファーの下半分、次に上半分にデータが入力されます(Debugステートメントで確認されます)。ただし、バッファの最初のロード後、再生は続行されません。したがって、どういうわけか、バッファの再作成は正常に機能しません。

アイデア?

(DirectSoundを使用しているのは、使用したいオーディオデバイスのGUIDを設定する唯一の方法であるためです。他の.NET対応のアプローチを利用できます。)

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

directx - DirectX11:ComputeShaderからVertexShaderにデータを渡しますか?

Compute Shaderを使用してレンダリングされるジオメトリデータにフィルターを適用し、その結果をVertex Shaderの入力バッファーとして使用することは可能ですか?これにより、データを読み戻す手間(&時間)を節約できます。

どんな助けでも大歓迎です。

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

directx - ピンを外してから再接続する

DirectShow.net と SlimDX を使用して、クワッドにビデオ テクスチャを配置しています。デバイスの紛失に問題があります。デバイスをリセットできません。何時間ものグーグル検索の後、解決策が vmr9 ピンを切断し、デバイスをリセットして、ピンを再接続するというフォーラム トピックを見つけました。

切断する方法を知っています:

これでリセットはOKですが、どうすれば再接続できますか?

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

c# - D3DImage 経由の SlimDX と WPF

SlimDX と WPF を使用して、最終結果が赤い画面になると予想されるコードをいくつか書きました。

残念ながら、私が得るのは黒い画面だけです。

これはWindows 7にあります。

私が欠けている主要なものを誰でも見ることができますか?

のバックバッファとして別のサーフェスを使用している理由は、D3DImage複数のビューポートが必要になるからです。デバイスの初期バックバッファの代わりに別のサーフェスにレンダリングすることが、それを実現するための最良の方法であると考えました。

とにかく、コードで..

免責事項: 悪いコードは無視してください。これは完全に使い捨てのコードとして書かれているので、目的を達成する方法を理解することができます。

これが私のウィンドウクラスです:

そして、ここに私の「レンダラー」クラスがあります

-- Edit: For a second I had thought I'd solved it, but it seems it will only work when my second render target (the one I'm trying to clear red) is 640x480. Any thoughts?

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

c# - SlimDXに基づくビッグおよび/またはオープンソースゲーム

SlimDXフレームワークに基づく主要なタイトルやオープンソースゲームはありますか?DirectXの単なるラッパーであることは理解していますが、成熟した環境で使用されるのを見るのは興味深いことです。

ゲームの裏側にもある種のストーリーを探しています。フレームワークがどのように選択されたか、落とし穴は何かなどについてのいくつかの後知恵です。

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

directx - ウィンドウモードへのSlimDxフルスクリーン切り替えの問題

SlimDx のチュートリアル ( http://slimdx.org/tutorials/devicecreation.php ) を使用していて、swapchain の IsFullScreen プロパティがないことに気付きました。したがって、利用可能な他の方法を使用しようとしたところ、問題が発生しました。- フルスクリーンに切り替えると、正常に動作します。しかし、非全画面表示に戻すと、移動できない空白のボックスしか表示されません。

何が起こっている?チュートリアルのように isFullScreen プロパティがないのはなぜですか。デバイスがどこかで紛失していませんか?

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

c# - SlimDXDirectInput初期化

最近、Direct3D11を使用してMDX2.0からSlimDXに交換しましたが、キーボードとマウスのコントロールを実装するのに苦労しています。

MDXでは使用できます

ただし、SlimDXには別の方法があります。SlimDXでは、デバイスは抽象クラスであり、代わりにDirectInputオブジェクトを渡すことによって初期化する必要があるKeyboardクラスがありますが、DirectInputオブジェクトの作成方法やその目的を理解することはできません。

私が知る限り、SlimDXのドキュメントはかなりスリムですが、その特定の癖を学ぶための優れたリソースを誰かが知っているなら、ありがとう。

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

c# - SlimDX を使用した定数バッファの設定

Microsoft Direct3D11 チュートリアルに従っていますが、C# と SlimDX を使用しています。定数バッファーを設定しようとしていますが、それを作成または設定する方法がわかりません。

定数バッファーを使用して 3 つのマトリックス (ワールド、ビュー、プロジェクション) を設定しようとしているだけですが、作成、データ入力、シェーダーへの受け渡しのすべての段階で苦労しています。

MSDN の HLSL (基本的にコピーしたもの) は次のとおりです。

MSDN の C++ コードは次のとおりです。

これをSlimDXに変換する方法を知っている人はいますか? または、誰かが SlimDX のチュートリアルやリソースを知っていれば、それも役に立ちます。

ありがとう。

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

c# - SlimDXDirect3D11インデックス作成の問題

SlimDXとDirect3D11を使用してインデックス付きの正方形を描画しようとしています。インデックスなしで正方形を描くことができましたが、インデックス付きのバージョンに切り替えると、空白の画面が表示されます。

私の入力レイアウトは、位置データのみを取得し(SlimDX Webサイトの3番目のチュートリアルから基本的に拡張しています)、三角形リストを描画するように設定されています。

私のレンダリングループコードは次のとおりです(チュートリアルのtriangle.fxピクセルと頂点シェーダーファイルを使用しています。これらは(画面座標で)頂点位置を取り、黄色にペイントします。D3DはSlimDX.Direct3D11の省略形です)

「メッシュ」は、頂点バッファー、インデックスバッファー、および頂点カウントを保持する構造体です。データはここに入力されます:

これはすべて、インデックス付けされていない正方形の方法とほぼ同じです(インデックスバッファーとインデックスが追加され、インデックス付けに必要のない2つの重複する頂点が削除されています)が、インデックス付けされていないメソッドは正方形を描画しますが、インデックス付けされたメソッドは't。

私の現在の理論は、この行に何か問題があるというものです。

またはこれらの行: