2

画面にビデオ出力をレンダリングするためにDirectX9を使用しています。使用されるライブラリはSlimDXです。

作成されたソフトウェアは、出力デバイスから不良ピクセルをマークするために使用されるため、テクスチャフィルタリング/スムージングが行われないことが重要です。

すべてのテクスチャフィルタリングオプションを無効にし、アンチエイリアシングを無効にし、バックバッファとレンダリングされたテクスチャの間で1:1の比率でテクスチャを画面に揃えました。一部のデバイスでは、DirectXが出力に対して双一次フィルタリング/ブラーを実行しているようです。

-0-フィルタリングを使用して、すべての出力をブロック状にする必要があります。すべてのサイズ変更コードはコントロール自体で操作されるため(バックバッファーのサイズ変更などはありません)、バックバッファーのサイズを変更するオプションはありません。

奇妙なことに、これはすべてではなく、一部のデバイスでのみ発生します。

コントロールへのレンダリングをスムーズにしないようにDirectXに指示するにはどうすればよいですか?(バック/フロントバッファに対して行われるテクスチャフィルタリングを無効にします)

助けてくれてありがとう(:

私が何を取り除こうとしているのかわからない人のために-レンダリングされた画像の解像度が描画された領域の解像度よりも低い場合、Direct3Dはピクセル間のスムーズな遷移を作成します。私が欲しいのは、各ピクセルをフィルタリングなしの単純な長方形として描画することです。この動作を制御する設定はどこにありますか?

4

1 に答える 1

3

私はそれをオンラインで調べました、そしてどこにもこの振る舞いの適切な説明がないようです。

何が起こっていたのか:
WindowsXP以前のデフォルトのDirectXの動作は、すべてのレンダリング出力をスムーズにすることでした(レンダリング先のコントロール/画面がバックバッファーと正確に同じサイズでない場合)

WindowsVista以降、デフォルトの動作では、ピクセルはそのままになります(これは、基本的に、各ピクセルを表す引き伸ばされた長方形を意味します)。

これはドライバー自体の動作であるため、ユーザーはこれを完全に制御できません。唯一の解決策は、ピクセルごとのレンダリングを節約するためにコントロールのサイズが変更されるたびにバックバッファーをリセットすることです。それ以外の場合は、DirectXが制御します。サイズ変更のテクニックを超えて

于 2012-05-09T14:16:17.400 に答える