問題タブ [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.
c# - 有効なテクスチャがシェーダーに到達しないのはなぜですか? (ダイレクト3D9)
こんにちは、私は現在、c# と SlimDX を使用してグラフィック エンジン用の遅延レンダラーを作成しようとしています。リソースとして、このチュートリアルを使用します。これは、XNA を対象としていますが、非常に役立ちます。しかし、今は行き詰まっています...すべてのジオメトリの色、法線、深度を描画してレンダー ターゲット テクスチャを分離するようにレンダラーを設定しました。これは機能します。結果のテクスチャを復元されたバックバッファにスプライトとして描画でき、想定どおりのものが含まれていることがわかります。しかし、これらのテクスチャを別のシェーダーに渡そうとすると (この場合はライト マップを作成するために)、奇妙なことが起こります。1 つのフレームを描画する方法は次のとおりです。
ここで、DrawDirectionalLight の呼び出しを _colorTexture、_normalTexture、および _depthTexture を画面に描画するコードに置き換えると、すべて問題ないように見えますが、代わりに DrawDirectionalLight 関数を使用すると、激しいちらつきが見られます。PIX の出力から、テクスチャがシェーダーに正しく渡されていないように見えます。
チュートリアルに従って、テクスチャ パラメータとサンプラーを次のように定義します。
今、私の大きな質問は、なぜですか?デバッグ出力に出力されるエラー メッセージはありません。
編集:
レンダー ターゲット/テクスチャは次のように作成されます。
編集2:
他の通常のテクスチャを渡すこともできないため、問題は directionalLightShader 自体にあるようです。
geometry - PIXで歪んで見える画面スペースの正方形
画面全体を覆う正方形を作成するシンプルな関数があり、後処理効果を適用するために使用していますが、それが数え切れないほどのエラーの原因であることがわかります。
PIXでコードを実行すると、次のメッシュが表示されますが、正方形はまっすぐで画面を覆っているはずです。
私の頂点シェーダーは変換を行わず、位置情報をピクセルシェーダーに渡すだけです。
正方形を作成する関数は次のとおりです。
正方形をレンダリングすると:
編集:実行中の頂点シェーダーを追加しました
これがPIXの頂点出力です。
PreVS:
PostVS:
これが、頂点0のデバッグを選択したときに生成された分解PIXです。
入力アセンブラも追加しました。
c# - C# SlimDX を使用したフルスクリーン ゲームのキャプチャ
最近、ゲームのスクリーンショットを撮るアプリケーションを作成しました。
最初に GDI を使用してゲームをキャプチャしましたが、そのために win7/vis で aero を無効にする必要があり、Windows XP でいくつかの問題が発生しました。
DirectX を使用することに決め、Microsoft の DX がうまくいかないことに気付いた後、SlimDX スクリーン キャプチャのこの素晴らしい例を見つけました (http://spazzarama.wordpress.com/2009/02/07/screencapture- -direct3d/)
SlimDX は素晴らしい働きをしました! win7/vis で aero を無効にすることなく、ゲームをキャプチャすることさえできました。
唯一の問題は、ゲームをフルスクリーンに切り替えると、「D3DERR_DEVICELOST: デバイスが失われました (-2005530520)」というメッセージが表示されることです。
フルスクリーンのアプリケーションをキャプチャするようにコードをカスタマイズする方法を提案できる人はいますか?
注 : ゲームがフルスクリーンかウィンドウかを判断できる方法は既にあります。
そして、私はこの行を変更します:
これに:
gdi - SlimDX シーンを GDI ビットマップに直接レンダリングする方法
SlimDX でレンダー ターゲットを GDI ビットマップに設定して、シーンがレンダリングされるとすぐに別のスレッドで処理するためにそこからレンダーを BitBlt してレンダリングを続行できるようにする方法はありますか?
テクスチャにレンダリングしてから、コンテンツをビットマップにコピーする必要がありますか? 不要なコピーなしでこれを実行できるようにしたいと思います。可能な限りの高速化が必要になります。
c# - NV_STEREO_IMAGE_SIGNATUREおよびDirectX10/11(nVidia 3D Vision)
SlimDXとDirectX10または11を使用して、nVidia 3DVisionKitのステレオ化プロセスを制御しようとしています。この質問のおかげで、DirectX 9で動作させることができました。ただし、いくつかのメソッドが欠落しているため、DirectX10または11で動作させることができませんでした。
アルゴリズムは次のようになります。
- 左目の画像をレンダリングする
- 右目の画像をレンダリングする
- それらの両方と追加の行を含むことができるテクスチャを作成します(したがって、テクスチャサイズは2 *幅、高さ+ 1になります)
- このNV_STEREO_IMAGE_SIGNATURE値を書き込みます
- このテクスチャを画面にレンダリングします
すでにステレオテクスチャがあるため、テストコードは最初の2つのステップをスキップします。これは以前の.JPSファイルであり、特にnvidia3Dキットに付属のサンプル画像に含まれているファイルの1つでした。ステップ5は、フルスクリーンクワッドとシェーダーを使用して、正射影行列を介してステレオ化されたテクスチャをレンダリングします。DX9で見たサンプルコードはこれを必要とせず、StretchRect(...)メソッドを呼び出してテクスチャをバックバッファにコピーして戻します。それで、多分それは機能していないこの理由のためですか?DX10でこれを達成するための同様の方法はありますか?バックバッファへのレンダリングは、理論的にはテクスチャをコピー(またはStretchRecting)するのと同じだと思いましたが、そうではないでしょうか?
これが私のコード(slimdx)に従います:ステレオ化手順
NV_STEREO_IMAGE_SIGNATUREデータ
主要
前もって感謝します!
c# - SlimDX-スレッドを終了します
新しいウィンドウを作成し、新しいスレッドでSlimDX.Windows.MessagePump.Runを使用しました。どうすればそのループを止めることができますか?
c# - SlimDX - 状態ブロックの設定
SlimDX Direct3d9 デバイスで状態を設定したい。
私はframeRender関数の初めにそのコードを持っています。
しかし、デバッグ ウィンドウで次のエラーが表示されます。
私は何百万ものそれらの行を取得しています。全員が同じことを言っています。これらの状態をどのように処分すればよいですか? 正しい作り方は?
c# - Vector4配列を使用して構造体をcbufferに渡そうとしています
SlimDX(DX10 / 11を使用)で少し遊んでいて、これまでにいくつかの素晴らしい結果が得られましたが、Vector4の配列をシェーダーに渡すことに固執しています。
次の構造体を試してみると:
次のcbufferに保存してみてください。
エラーは発生しませんが、行列の値が壊れています。
ただし、c#で構造体を次のように宣言すると、次のようになります。
その後、すべてが期待どおりに正常に動作します。
構造体に64個のフィールドを作成して、そのように埋めたくはありません(リフレクションを使用することはできますが、それでも)。配列を使用してVector4を定数バッファーに渡すにはどうすればよいですか?
どうしてもこれがばかげた考えであり、別の方法で行う必要がある場合は、私に知らせてください。DirectXおよびシェーダー関連のものをプログラミングするのは初めてです。
完了するには:
C#でのバッファーの宣言
バッファを更新する方法:
前もって感謝します
c# - SlimDX Line.GLLines は何をしますか?
Slimdx の calss ラインのこのプロパティは何ですか?
GLines = true / false
これは私が話しているクラスです: http://slimdx.org/docs/#T_SlimDX_Direct3D9_Line
c# - SlimDX 使用時の不適切なクリッピングと 3D プロジェクション
私は、SlimDX を使用して WinForms アプリケーション内で 3D オブジェクトを表示したい単純なプロジェクトに取り組んでいます。これを行う小さなプロジェクトを作成しましたが、レンダリングしたオブジェクトが 0.0f と -1.0f の間でクリップされるという問題が発生しています。
私は同様のプロジェクトの友人のコードを見てきました (彼らにはこの問題はありません) が、なぜそれが起こっているのかわかりません。オブジェクトを表示するには、オブジェクトのサイズを -0.1f -> 0.1f の範囲に制限する必要がありました。ファー プレーンを拡張しても何も起こりません。私の友人が使用しているプロジェクトは、クリッピングの問題もなく、私の 500 倍以上のサイズのオブジェクトをロードできます。
誰か提案はありますか?(スクリーンショットとコードについては、以下を参照してください)
フォームコード
頂点シェーダー コード
ピクセル シェーダー コード