問題タブ [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 投票する
1 に答える
1289 参照

.net - VMR9Allocator (DirectShow .NET + SlimDX)

MDX の代わりに SlimDX を使用して、DirectShow .NET 用の VMR9Allocator サンプルを変換して実行しようとしていました。この行に到達すると例外が発生しました

Allocator.cs の AdviseNotify メソッド。

例外は

そのようなインターフェースはサポートされていません

、そして hr リターンは

0x80004002

.

サンプルは MDX で正常に動作し、SlimDx を使用して別の 3d アプリを作成したので、SlimDx も正常に動作しています。

私は何がうまくいかなかったのかを知ることができないようです。グーグルの助けもありません。どうやらこの組み合わせを使用する人はあまり多くなく、実際にこの問題に遭遇することはありません。

注: 2 週間前に gamedev.net で同じ質問をしましたが、今のところ回答がありません。

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

c# - Direct3D (Transformation2D?) での効率的な線画

背景:私は DirectX 用の SlimDX C# ラッパーを使用しており、Sprite クラスを使用して多くの 2D スプライトを描画しています (従来は、基礎となる dll の Direct3DX 拡張から)。一度に数百のスプライトを画面に描画していますが、パフォーマンスは素晴らしいです。私のクアッド コアでは、10,000 以上のオブジェクトのロジックを含め、ゲーム全体でプロセッサの 3 ~ 6% を使用しています。 2 番目のスレッドのルーチンなど。明らかに、スプライトは完全なハードウェア アクセラレーションを使用して描画されており、すべてが本来あるべき状態になっています。

問題: Line クラスへの呼び出しを導入し始めたときに問題が発生します。(ドラッグ選択ボックス用に) 4 本の線を引くとすぐに、プロセッサの使用率が 13 ~ 19% に急上昇します。これでたったの4行!

私が試したこと:

  1. 線のアンチエイリアシングのオンとオフを切り替えます。
  2. GLines のオンとオフを切り替えます。
  3. 描画する呼び出しの周りで line.begin と line.end を手動で呼び出します。
  4. line.begin と line.end へのすべての呼び出しを省略します。
  5. line.draw への呼び出しが sprite.begin / sprite.end ブロック内にないことを確認します。
  6. sprite.begin / sprite.end ブロック内で line.draw を呼び出す。
  7. 4 ラインのレンダリング、または 300 のレンダリング。
  8. すべてのスプライトとテキストのレンダリングをオフにし、ライン レンダリングを 4 行だけ残します (これが何らかのモード変更の問題であるかどうかを確認するため)。
  9. 上記のほとんどの組み合わせ。

一般に、これらのいずれもパフォーマンスに重大な影響を与えませんでした。#3 では、プロセッサの使用率がおそらく 2% 減少しましたが、それでも、本来よりも 8% 以上高いままです。最も奇妙なことは、上記の #7 がパフォーマンスにまったく影響を与えなかったことです。4 行でも 300 行と同じくらい遅かったのです。私が把握できる唯一のことは、これが何らかの理由でソフトウェアで実行されているということです。および/または、グラフィックカードがある種の描画モードを継続的に切り替えていること。

マトリックスアプローチ:

誰かが上記の問題の修正を知っている場合は、それを聞いてみたいです!

しかし、これは一般的に directx 内の問題である可能性があると想定しているため、別のルートを追求してきました。つまり、独自のスプライト ベースのラインを作成することです。基本的に、1 ピクセルの白い画像があり、拡散色と変換を使用して線を描画しています。これはパフォーマンス的には機能します。このように 300 本の「線」を描画すると、クアッド コアで探している 3 ~ 6% のプロセッサ使用率のパフォーマンス範囲に収まります。

ピクセル ストレッチ ライン テクニックには 2 つの問題があります。変換について詳しい人が助けてくれることを願っています。水平線の現在のコードは次のとおりです。

これは、画面上のほぼ正しい位置にほぼ正しいサイズの線を描画する限り、機能します。しかし、物事が右にずれて見えるのは奇妙です。私のマトリックスアプローチがまったく正しいかどうかはよくわかりません.1x1のスプライトを水平方向にある量のピクセルでスケーリングし、垂直方向に別の量だけスケーリングしたいだけです. 次に、それらを配置できるようにする必要があります-中心点で問題ありません。それが私がしなければならないことだと思いますが、左上で配置できれば、さらに良いでしょう。これは単純な問題のように思えますが、行列に関する私の知識はかなり貧弱です。

これにより、純粋な水平線と純粋な垂直線が機能するようになり、これがほとんどの戦いです。それだけで生活でき、現在斜めの線を使用している場所に他の種類のグラフィックを使用できます. しかし、この引き伸ばされたピクセルのアプローチを使用して角度のある線を描く方法があれば、本当にいいと思います. つまり、たとえば 1,1 から 7,19 までの線を引きます。行列の回転などでは、これは実行可能のようですが、推測とチェック以外にどこから始めればよいかわかりません。これには永遠に時間がかかります。

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

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

c# - C#で行列を一度に回転、スケーリング、および変換する方法は?

さて、これは単純なマトリックスの質問であるべきですが、私のマトリックスの理解はやや限られています. シナリオは次のとおりです: 1px x 1px のスプライトがあり、x と y の量 (両側で異なる量) でスケーリングし、そのスプライトを角度で回転させたいと考えています。全体を正確に配置します(左上または中央から、私には違いはありません)。

これまでのところ、私のコードは漠然と近いですが、渡す角度に応じて、ランダムな量だけずれている傾向があります.

私はこれがそれを行うと思います:

しかし、私はそれが正しい位置にあると思っていても、回転した線のスケールを縮小する傾向があります.

私もこれを試しました:

線は正確なサイズと形状で正確に見えますが、正確に配置することはできません。上記の呼び出しの最後に移動ベクトルを使用した場合、または Sprite.Draw を使用して位置を設定した場合、どちらも正しく機能しません。

これはすべてSlimDXにあります。私は何を間違っていますか?

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

c# - SlimDX で 2D を描画する

こんにちは、SlimDX でスプライトを正しくレンダリングできません。.NET Drawing DrawImageUnscaled と同じように、少し拡大縮小して描画します。私は変換を使用していません。

初期化:

レンダリング:

編集:間違ったレンダリングを想像する方法がわからない場合は、レンダリングして参照するものを次に示します(その白い色は無視してください。それは単なる透明なPNGです)。最初の画像がどのようにスケーリングされているかに注目して ください

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

directx - SlimDX (DirectX10) - テクスチャでテクセルを変更するには?

既に読み込まれているテクスチャのテクセルを変更しようとしています。

Texture2D::Map と UnMap 関数を使用することを想定していましたが、指定された DataRectangle のデータを変更しても変化はありません。

両側から黒から白へのグラデーションで 128x128 のテクスチャを作成するような簡単な例が必要です。

どうも

ps: Direct3D 10 C++ の例も役立つ場合があります。SlimDX は単なるラッパーであり、ほぼ同じ機能を備えています。

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

wpf - DX10 を使用した D3DImage

WPF の D3DImage で DirectX 10 (私は SlimDX を使用しています) を使用することは可能ですか? 私が見つけることができる唯一の例とドキュメントは、DX9 サーフェスの使用のみを示しています。

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

c# - SlimDX を使用してマイクからオーディオ入力をキャプチャする

VS 2008 SlimDX 2009 年 3 月

SlimDX を使用して入力オーディオをキャプチャし、プログレス バーに表示しています。バックグラウンドスレッドでキャプチャを行い、進行状況バーを更新するバックグラウンドワーカーがあります。

ただし、プログレスバーを更新する値として何を使用するかという問題に直面しています。

すべてが正常に機能し、キャプチャが開始されます。ただし、進行状況バーを更新しようとすると、アプリケーションは失敗します。

編集 ==== DoWork でコードを編集しました。今回はラウンド数を与えるInt16を使用。ただし、現在直面している問題は、バッファーがオーバーランすることです。とにかく、最後に到達すると最初からやり直すサーキュラーバッファーを作成することはありますか?

助言がありますか?

どうもありがとう、

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

c# - SlimDX Directx 9 の問題

directx を初期化しようとすると、次の問題が発生します。

SlimDX.Direct3D9.Direct3D9NotFoundException は処理されませんでした Message="Direct3D 9 が見つかりませんでした。DirectX を再インストールすると問題が解決する場合があります

コード:

PC にインストールされている Directx のバージョンを dxdiag ユーティリティで確認したところ、Directx 9c がインストールされていることがわかりました。

問題の原因は何ですか。

アブドゥル・ハリク

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

c# - SlimDXの2Dトライアングル

三角形の頂点がピクセル座標で指定されている場合、SlimDXのDirect2Dインターフェイスを使用して三角形を描画するにはどうすればよいですか?

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

visual-studio - SlimDXアセンブリリファレンス

SlimDXをインストールしましたが、Visual Studioでアセンブリ参照が選択できず、SlimDXがどこにインストールされているかを一生知ることができません。どんな助けでも大歓迎です!

感謝、

マイキー