問題タブ [directx]
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.
image - DirectX による大きな画像の表示が速くなりますか?
産業用ビジョン アプリケーションの開発者として、私は 6000x4000 ピクセル以上のかなりぎこちない画像をよく使用します。
カメラと画像処理が新しい画像の安定したストリームに取り組んでいる間 (そしてこの処理が主なタスクです)、ユーザーが他の画像を並行して快適に表示できるようにしたいと考えています。
プロセッサ (GDI など) でこれを行うと、パフォーマンスが大幅に低下します。たとえば、画像を分析するのに 0.2 秒かかりますが、1 回のズーム (コントロールに合わせてサイズを変更) で表示するには 0.8 秒かかります。
Photoshop では、グラフィック カードの非常に高速なメモリと処理の助けを借りて表示とズームが可能であるため、自分のコードでこれを実験できるかどうか、またその方法を誰かに教えてもらえないかと考えました。これは私の 76MB の rgb-data に相当しますか?) そして、ユーザーが操作するためにユーザーがコントロール/カードにズームして移動する手間をかけずに、何らかのコントロールに表示させます。
3D の外観は必要なく、2D-rgb-image で移動してサイズ変更するだけです。プロセッサの負荷が低く、高速で快適な表示を実現することを目的としています。
==>これは可能ですか(テクスチャなどとして)?==> >=256MB の現在のローエンド 3D カードに制限はありますか? ==> 誰かが予想される期間を提案できますか (データのコピー、ズーム)?
windows - DirectInput ライブラリの guidInstance に関する質問。デバイスの列挙も扱います
DIDEVICEINSTANCE の guidInstance について
マイクロソフトは次のように述べています。
デバイスのインスタンスの一意の識別子。アプリケーションは、インスタンスのグローバル一意識別子 (GUID) を構成ファイルに保存し、後で使用できます。インスタンス GUID は、特定のコンピューターに固有です。あるコンピューターから取得したインスタンス GUID は、別のコンピューターのインスタンス GUID とは無関係です。
デバイスをコンピューターに接続し、プログラムが列挙を実行して GUID を見つけた場合、再度列挙する必要はありますか? ユーザーがデバイスを抜き差しした場合でも。同じタイプの別のデバイスが接続されている場合、2 番目のデバイスが最初のデバイスと同じではないため、別の GUID が必要であることを引き続き認識しますか? プログラムがデバイスを見つけるために実行するたびにすべてのインターフェイスを再列挙する必要がありますか、それとも特定の PC に対して 1 回で十分ですか?
ありがとう。
multithreading - Windows ハンドルを使用して、bgnd スレッド セーフから DirectX 呼び出しを行っていますか?
アンマネージ コードの上にある (ほとんどの場合) Winforms UI であるアプリをデバッグしています。UI コードの一部は WinForms ではありません。DirectX を使用して、一部の Panel コンポーネントの表面に直接描画しています。そのために、コンポーネントの作成後にコンポーネントのウィンドウ ハンドルが記録され、この DirectX 表示を実行するモジュールが必要とするハンドル (GetWindowRect() など) を必要とする後続の呼び出しでは、このハンドルが使用されます。このメカニズムはしばらく前から存在していましたが、これから説明する問題は見られませんでしたが、運が良かっただけかもしれません。これを配置したプログラマーは、もう私には利用できません。
私が解決しようとしている問題は、非常に断続的に、この領域の表示が壊れることです。このルーチンは、バックグラウンド スレッドから呼び出されています。たとえば、GetWindowRect() の呼び出しが突然、描画の問題に付随してガベージ座標を返すことをアプリ ログで確認しました。Window ハンドル自体は破損しておらず、Windows データ構造を上書きしていないことは確かです。表示ストリームを停止して再開すると、GetWindowsRect() は同じ Windows ハンドルを使用して、適切な座標を再び返し始めます。
これが .NET レベルの場合は、Invoke を使用して描画をメイン スレッドに延期します。私の質問は、この DirectX 呼び出しに対して同じことを行う必要があるかどうかです。私は、バックグラウンド スレッドで描画しないことに関する Microsoft の警告を見つけようとしていました。誰でも私にこれを指摘できますか?
パソコン
c# - C# を使用して外部アプリケーションのスクリーンショットを撮る
私たちが起動した任意のアプリケーションのスクリーンショットを撮りたい C# (WPF) アプリケーションがあります (つまり、開始したプロセスへの参照があるため)。アプリケーションは最小化されているか、他のウィンドウの背後にある可能性がありますが、ピクセルの重なりではなく、個々のアプリケーションの画像のみが必要です。
BitBlt またはPrintWindowを使用した典型的な P/Invoke ソリューションがほとんどの場合機能することは知っていますが、グラフィック デバイスに直接描画する DirectX または OpenGL アプリケーションを処理する場合、それらは失敗します (黒/透明ピクセルしか得られません)。C# から Direct3D アプリのスクリーンショットを撮ることに関するこの記事を見つけたので、そのケースをカバーしたと思います。
だから私の質問はこれです:
- OpenGL アプリケーションでこれを行うにはどうすればよいですか?
- 使用する適切な方法 (PW/DX/GL) を決定する最も簡単な方法は何ですか?
- これを行うための単一の普遍的な方法はありますか?
#2 については、実行可能ファイルによってロードされたモジュールを検査し、DirectX または OpenGL DLL/アセンブリがロードされているかどうかを確認する必要がありますか?
これは Windows XP でのみ実行する必要があります (クロスプラットフォームではなく、このアプリケーションがすぐに Vista/7 に移行することはありません)。
windows - OpenGL をサポートしている Windows ボックスの割合
新しいグラフィック プロジェクトの開始を考えていて、Java を使用したいと考えています。Java には、関連するすべての GL 機能のラッパーがありますが、まともな GL ドライバーを実際にインストールしている人は、カジュアル ユーザーを含めてどれだけいるのでしょうか。まともとは、ある程度安定しており、かなり新しいことを意味します (2.0 に付属する GLSL サポートは素晴らしいですが、GL 1.5 サポートはおそらくそうでしょう)。Java でも DirectX を使用できましたが、私はそれが大嫌いで、このプロジェクトは「楽しい」はずです。また、少なくとも GL のほぼクロスプラットフォーム性が気に入っています。では、GL アプリを実行するためのドライバーを持っている Windows ユーザーの割合に関する非架空の統計を知っている人はいますか?
directx - 画面全体のサイズを変更するにはどうすればよいですか?
タスクバー、ウィンドウ、デスクトップなど、表示されるすべてのもののサイズを変更して、境界線に配置できるようにしたいと考えています。これを達成するための最良の方法は何ですか?DirectX を考えていますが、あまり詳しくありません。どの技術がこれを達成するのかはわかりませんが、かなり低レベルでなければならないでしょう。
java - ハードウェアで高速化された 3D グラフィックスを備えた Java アプレット? OpenGL および/または DirectX
私はすべてのグーグルでこの質問に対する明確な答えを見つけることができません.
Web アプレットが必要な場合、OpenGL や directx のように、クライアントのマシンでハードウェア アクセラレーション グラフィックス ドライバを利用する Java のライブラリはありますか? アプレットが起動して 3D グラフィックス機能を検出する前に、ドライバ検出コードを書いているところを想像しています。
Java 3D ライブラリがたくさんあることはわかっていますが、これを理解することはできません。
私はあなたがそれを行うことができるという印象を受けましたが、それを見つけることができません.
お尋ねしているのですが、Flash と Silverlight はどうでしょうか。彼らの 3D グラフィックスはすべてソフトウェアでレンダリングされていると思いましたか?
編集:
質問に対する答えはイエスです。Java は 3D ハードウェアをサポートしています。すべての情報をありがとう!
私の本当の質問は(私が得ているもの)だと思います:
1) これは、完全に使用するためにどの程度サポートされていますか? たとえば、DirectX または OpenGL シェーダーを使用できますか? 物事を抽象化する傾向があるため、いくつかの機能が欠落していると予想される場合があります。クライアントの GPU 機能を詳細に一覧表示する GPUID プログラムまたはユーティリティを作成できますか?
2) 実用的ですか?Quake のような古い 3D ゲームを Java アプレットに移植して、適切なパフォーマンスを得ることができますか? (もちろんクライアントシステムに依存します)
silverlight - Windows での DirectX プログラミング、推奨される方法は何ですか?
ビジネス アプリケーションの一部を派手な方法で開発する必要があります。したがって、DirectX を使用できるかどうかを確認したかったのです。これが私が得たものです。
最初に、C/C++ を使用することは自分自身を撃つようなものであり、代わりに DirectX.NET を使用する必要があることを読みました。私は反対できませんでした。21世紀です。
DirectX SDK をダウンロードしましたが、そこに .NET アセンブリが見つかりませんでした。ネットを検索すると、DirectX .NET (MDX と呼ばれる) は廃止されていることがわかりました (2006 年にリリース)。代わりに、主に XBOX 用に開発された XNA を使用する必要があります。
XNA ダウンロード. しかし、C#.NET Express 2005 SP1 を持っていないため、インストールできません。VS Pro 2005 に SP1 をインストールしましたが、まだインストールされません。Express 2005 と、Pro ではなく、明らかに 2008 ではなく、まさにその 1 つのバージョンが必要です。
イライラして、無料の C#.NET Express をダウンロードしようとしました。しかし、C#.2005 は現在廃止されているため、C#.2005 と書かれている MS からのリンクは実際には C#.2008 をダウンロードします。
そして今、MS が WPF/silverlight に力を入れていることを読みました。また、XNA は DX10 をサポートしておらず、Vista には DX9 が付属していません。
今、私には2つの選択肢があります:
15 年前にさかのぼって、単純な古い C/C++ でコーディングします。少なくとも C は時代を超越したものであることが証明されています。
シルバーライトを試してみてください。
あなたのアドバイスは何ですか?または、何か不足していますか?
Udpate: DX10 は他の DX バージョンと下位互換性がないことを付け加えたいと思います。SlimeDX は本当に有望に見えます。しかし、非常に新しいパッケージであるため、ドキュメントとチュートリアルがどれほど役立つかはわかりません。
Udpate 2: 私が使用した XNA ダウンロードを検索したときに Google が表示する最初のダウンロード リンクは、最新のものではないようです。v.3 へのリンクを提供してくれた DouglasH に感謝します。それをダウンロードしています。おそらくうまくいくでしょう。
しかし、その後エイジアン。WPF/Silverlight に切り替える必要がありますか? それとも XNA を使用しますか? どちらがよりよく文書化されており、将来性がありますか?
さらに更新: Vista には DirectX 9 がプリインストールされていません [グーグルで確認]。少なくとも、昨年までは私のマシンにはありませんでした。グーグルで検索すると、MSからダウンロードした後、VistaにDirectX 9を手動でインストールする必要があることがわかりました。しかし、DX9/vista 用のハードウェア ドライバーが見つからなかったか、動作しなかったため、私の証明書は失敗しました。あまりサポートされていないことに気づきました。
windows-7 - Direct2D と DirectWrite の機能について
XP および Vista で Direct2D および DirectWrite 機能を有効にする方法を知っている人はいますか? Direct2D と DirectWrite は、Windows 7 で導入されました。