2010-12-08 31 views
1

これは愚かな質問ですが謝罪しますが、私は頭がおかしくなりません。OpenGLフラグメントシェーディングはどのように実行されますか?

私はMayaで作成した(そしてOBJとMTLファイルにエクスポートした)3Dオブジェクトを持っており、OGLでモデルビューアアプリケーションを作成しました。 GLSLシェーダを指定していないため、OGLはFFPを使用して各ピクセルのフラグメントカラーを決定する必要があります。これは正しいです?

私の理解では、FFPは鏡面ハイライトや反射などを表示できるため、何らかの種類のデフォルトシェーダを実装する必要があります。誰かが私にこれに関するいくつかの情報を与え、このシェーディングの仕方を教えてくれますか?

オブジェクトの材質のプロパティを設定するために材質定義が使用されていることを理解していますが、手動でシェーダを指定することなく、OGLウィンドウの材質表示と相互作用するライトの最終効果(したがって、いくつかのデフォルトシェーダがあるという私の信念)。

おかげで、

- 第3世代以降のGPUの場合はクリス

答えて

2

すべてのあなたの仮定確かに、正しいです。カスタムシェーダが指定されていない限り、ドライバはFFPを模倣するデフォルトのシェーダをGPUに提供します。

デフォルトのシェーダは、通常、Phong Lightingモデルを実装しています。その詳細は、テクスチャ環境などの設定パラメータによって異なります。

古いGPU世代の場合、固定機能パイプラインは固定配線されています。

+0

ありがとうございました!私はこの答えの日を探しています!なぜこの情報が来るのが難しいのか理解できません!このデフォルトのシェーダは、使用しているOpenGLライブラリ(JOGLまたはLWJGL)に含まれていますか、それとも他の場所にありますか?また、Lambert素材をエミュレートすることも考えていますが、GLコンテキストのすべてのスペキュラ設定をオフにするだけですか? –

+0

このデフォルトのシェーダには通常、ドライバが付属しています。 OpenGLは、命名法の示唆に反して、ライブラリそのものではありません(もちろん、ライブラリとリンクしています)。これはドライバにとってのAPIなので、ドライバはデフォルトを実装する責任があります。 Lambert材料をエミュレートするには、材料のGL_SPECULAR成分を0に設定します。 – datenwolf

+0

この情報は、OpenGL仕様ではっきりと述べられています。 – datenwolf

関連する問題