3

DX9 ではオプションでシェーダーを指定できること、および DX10 ではシェーダーを指定する必要があることを認識しています。私が持っている質問は、シェーダーを使用したいと言って、シェーダーを指定しないとどうなるかということです。一言で言えば、私が探しているのはデフォルトの動作です。デフォルトのシェーダーはありますか?

次のシナリオに興味があります。

  • DX10、ピクセル シェーダーを指定しないでください。(PSSetShader(NULL) を呼び出さなければなりませんか? そうでない場合はどうなりますか?) 実行される既定のシェーダーは何ですか?
  • 同じ質問、頂点シェーダー。
  • DX9 で、ピクセル シェーダーを使用するように指定したのに指定しなかった場合はどうなりますか? デフォルトはありますか?固定機能インターフェースの使用を選択した場合、デフォルトはありますか? それらのデフォルトは同じですか?
  • おまけの質問: OpenGL と GLSL はどうですか? DX9と同じ質問です。

これに関するドキュメントへのポインタを見てみたいです.MicrosoftのオンラインDXドキュメントを熟読しましたが、デフォルトの動作を見つけることはできませんでした.

ありがとう!

4

1 に答える 1

3

OpenGL バージョン <= 2.x では、シェーダーを有効にしてもシェーダー コードを指定しないと、シェーダー ステージが不完全になり、何かをレンダリングしようとするとエラーが発生します。

OpenGL バージョン >= 3 コア プロファイルでは、シェーダーを提供することが必須です。シェーダーがないと、OpenGL-2 シェーダーが有効になっているのと同じ状況ですが、シェーダーが提供されていません: 何かをレンダリングしようとしています => エラー。OpenGL-3.x 互換性プロファイルでは、動作は OpenGL-2.x とまったく同じです。言及するデフォルトのシェーダーはありません。動作は、シェーダーで記述できる固定関数パイプラインと一致しますが、実際のシェーダー コードは指定されていません。 . 技術的には、最新の GPU 用の OpenGL-2.x ドライバーは、現在設定されている固定関数パイプライン構成に一致するシェーダーをその場で作成します。

于 2011-02-21T14:31:56.277 に答える