問題タブ [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# - SwapChain.Presentでのアクセス違反
次のコード行で非常に厄介な問題が発生します。
私のプログラムはイベントを発生させるタイマーを実行します。イベントが発生し、この時点でレンダリングしていない場合、プログラムはrendercallを強制します。別のタイマーとマウスイベントを同時に実行し、行列、頂点、バッファなどを更新しますが、レンダリング中は、これらの更新関数はすべてロックされますがDeviceContext.Draw(mNumVertices, 0);
、到達するまでは、同期オブジェクトのロックが解除されます。
VertexBufferBinding
今の私の質問-との間で変更された場合、アクセス違反が発生する可能性がDraw(..)
ありSwapChain.Present(..)
ますか?それともコピーされますか?そして、2番目の1つ-なぜこのアクセス違反をキャッチできないのですか?これは常に「未処理の例外」です。
編集:奇妙なことに、アクセス違反は私のWork Notebook(Core i5、Intel HD 3000、Radeon 6490M)にのみ表示され、自宅のラップトップ(Core i7、Intel HD 3000、NVidia GeForce 540M)には表示されません。
directx - 新しいTexture2Dを作成するときにピクセル形式を選択するにはどうすればよいですか?
SharpDX Toolkitを使用していて、Texture2Dをプログラムで作成しようとしているので、すべてのピクセル値を手動で指定できます。そして、それを作成するためのピクセル形式がわかりません。
SharpDXは、ツールキットのPixelFormatタイプについても文書化していません(別のPixelFormatクラスの文書はありますが、ツールキットではなくWIC用です)。ラップするDirectX列挙型DXGI_FORMATを見つけましたが、そのドキュメントには、フォーマットの選択方法に関する有用なガイダンスがありません。
私は、カラーチャネルあたり8ビットと8ビットアルファを備えた古い32ビットビットマップ形式に慣れています。これで十分です。ですから、最も簡単な選択肢はR8G8B8A8またはB8G8R8A8だと思います。どちらを選ぶかは重要ですか?両方ともすべてのハードウェアで完全にサポートされますか?
そして、それらの1つを選択した後でも、それがSInt、SNorm、Typeless、UInt、UNorm、またはUNormSRgbのいずれであるかをさらに指定する必要があります。sRGB色空間は必要ありません。Typelessが何のためにあるのかわかりません。UIntは最も単純なように見えますが、単純な古い符号なしバイトですが、機能しないことがわかりました。エラーは発生しませんが、テクスチャが画面に何も描画しません。UNormは機能しますが、UIntが機能しない理由を説明するドキュメントはありません。だから今、私はUNormが他のビデオカードでは動作しないかもしれないという妄想を抱いています。
誰かがそれを見たいのなら、これが私が持っているコードです。SharpDXフルパッケージをダウンロードし、SharpDXToolkitSamplesプロジェクトを開き、SpriteBatchAndFont.WinRTXamlプロジェクトに移動し、SpriteBatchAndFontGameクラスを開き、示された場所にコードを追加します。
これにより、画面の左上に対角線のある小さな長方形が描画されます。テストしているラップトップで動作しますが、それがどこでも動作するかどうかを知る方法も、最もパフォーマンスが高いかどうかもわかりません。
アプリがすべてのハードウェアで動作することを確認し、最高のパフォーマンスを得るには、どのピクセル形式を使用する必要がありますか?
c# - 遠近法のズーム値を遠近法と同じに設定します
直交ビューと透視ビューの2つのビューモードを備えた小さなシェイプエディタを作成しています。ですから、パースペクティブとオルソのズーム値が等しい(または可能な限り等しい)としたら、それは素晴らしいことだと思いました。
透視図のズーム値は、z軸上の位置を設定することで簡単にアーカイブされます。オルソの場合、左、右、上、下の角を0.0からXにスケーリングします。
それらを均等にズームすることは可能ですか?解決策はありますか?
rendering - DirectX11 での最適な頂点バッファー処理
D3D11 (WinRT アプリ用の SharpDX) を使用して 2D スプライトを描画するコードを書いています。これはすべて機能していますが、高速ではありません。ここに私が使用しているコードの一部があります:
このコードは、画面にレンダリングされるすべてのスプライトに対して呼び出されます。各スプライトの寿命は保証できません。それらは、次のフレームの同じ位置または別の位置にある可能性があります。多いかもしれませんし、少ないかもしれません。私のプロファイラーによると、多数のスプライトをレンダリングする場合、SharpDX.Direct3D11.Buffer.Create はフレーム全体の 50% を使用しています。これを行うにはもっと良い方法があると思いますが、何をすべきか頭を悩ませています。誰でもこれについて提案できますか?
c# - WinRT で SharpDX を使用して同時に複数のサウンドを再生するにはどうすればよいですか?
楽器タイプのアプリを作ろうとしています。私が抱えている問題は、古いサウンドが終了した場合にのみ新しいサウンドが再生されることです。それらを同時に再生できるようにしたいと思います。
これは私のコードがどのように見えるかです:
まず、オーディオ バッファとその他の情報を保持するだけの MyWave クラスです。
SoundPlayer クラス:
Google はあまり役に立ちませんでした。役に立つものは何も見つかりませんでした。では、どうすれば複数のサウンドを同時に再生できますか?
gdi+ - Direct2D で World <--> Device トランスフォームを実行する
GDI+ では、Graphics オブジェクトに TransformPoints 関数があり、デバイスからワールドまたはワールドからデバイスへの座標変換を指定できます。SharpDX では、デバイスの (独立した) 座標を取得し、Matrix3x2.TransformPoint(...) を使用してそれらを自分の世界に変換できますが、どうすれば他の方法に進むことができますか?
あるいは、私がやっていることは、一連の変換を通じて、現在の世界座標でしか知らない画面上に何かを描画することですが、その上にテキストラベルを描画したいと考えています。したがって、テキストを正しく描画するには、デバイスの座標に戻る必要があると思います (つまり、Identity を変換として設定します。drawtext(device x,device y) -- 幸せな日々)。したがって、TransformPoints を使用しない直接的な解決策があれば、私も嬉しく思います。
私は SharpDX を使用していますが、c++ の回答を喜んで翻訳します...
c# - SurfaceImageSourceにレンダリングされたコンテンツを印刷するにはどうすればよいですか?
SharpDxを使用して、WinRtのイメージコントロールでいくつかの図形をレンダリングしています。プリンターにレンダリングされたコンテンツを印刷するにはどうすればよいですか?
これらのレンダリング操作を実行せずにイメージコントロールのコンテンツを印刷しようとしましたが、機能しました。このメソッドを呼び出した後で同じことを試みると、空白で出力されます。
direct2d - 常に1ピクセル(デバイスに依存しない)の線をdirect2dで描画することは可能ですか?
レンダリングターゲットでDrawLine関数を使用していて、常に1(デバイスに依存しない)ピクセルの太さの線を描画したいと思います。
私の問題は、水平方向と垂直方向の寸法が大きく異なる変換があり、これらの寸法の1つに対してのみstrokeWidthをスケーリングできるように見えることです。
変換をIdentityに設定し、マトリックス変換ポイントを使用して各ポイントをデバイスに依存しない座標に変換し、正しい結果を得ることができますが、作業はGPUにオフロードされていません。
レンダーターゲットの変換で作業を実行できるようにする方法はありますか?
私はC#のSharpDXを使用していますが、C++の回答を翻訳できてうれしいです。
media-player - Media Foundation を使用した WP8 ビデオ ストリーミング
H264 ビデオを Windows Phone 8 アプリケーションにストリーミングしたいと考えています。では、どうすればShardDXでそれを行うことができますか? (または、Media Foundation のネイティブ関数かもしれません)。
ビデオを再生するための MediaEngine クラスを見つけましたが、フレームを「手動で」解析して、デコーダーやプレーヤーなどに取得する必要があります。
3d - DirectX Unproject のトラブル
正射投影を使用しており、スクリーン スペースから点を投影解除しようとしています。
ビュー行列と射影行列は次のとおりです。
Point を非投影にする方法p
は次のとおりです。ポイントは画面ピクセルで指定されます。
コードが機能しません。マトリックスm
には のみが含まれていNan
ます。反転しようとするview * proj
と、ゼロのみのマトリックスが返されます。
したがって、私の問題は正投影行列と関係があると思われます。
ここに私の質問があります:
- この問題は、OrthoOffCenterLH プロジェクションの値が大きいためにアンダーフローが発生した可能性がありますか?
x,y,width,height
で渡す必要があるパラメーターは何Unproject(...)
ですか?minZ
パラメータとmaxZ
パラメータにはどのような意味がありますUnproject(...)
か?- で何を渡すかは重要
p.Z
ですUnproject(...)
か?