これは愚かな質問ですが謝罪しますが、私は頭がおかしくなりません。OpenGLフラグメントシェーディングはどのように実行されますか?
私はMayaで作成した(そしてOBJとMTLファイルにエクスポートした)3Dオブジェクトを持っており、OGLでモデルビューアアプリケーションを作成しました。 GLSLシェーダを指定していないため、OGLはFFPを使用して各ピクセルのフラグメントカラーを決定する必要があります。これは正しいです?
私の理解では、FFPは鏡面ハイライトや反射などを表示できるため、何らかの種類のデフォルトシェーダを実装する必要があります。誰かが私にこれに関するいくつかの情報を与え、このシェーディングの仕方を教えてくれますか?
オブジェクトの材質のプロパティを設定するために材質定義が使用されていることを理解していますが、手動でシェーダを指定することなく、OGLウィンドウの材質表示と相互作用するライトの最終効果(したがって、いくつかのデフォルトシェーダがあるという私の信念)。
おかげで、
- 第3世代以降のGPUの場合はクリス
ありがとうございました!私はこの答えの日を探しています!なぜこの情報が来るのが難しいのか理解できません!このデフォルトのシェーダは、使用しているOpenGLライブラリ(JOGLまたはLWJGL)に含まれていますか、それとも他の場所にありますか?また、Lambert素材をエミュレートすることも考えていますが、GLコンテキストのすべてのスペキュラ設定をオフにするだけですか? –
このデフォルトのシェーダには通常、ドライバが付属しています。 OpenGLは、命名法の示唆に反して、ライブラリそのものではありません(もちろん、ライブラリとリンクしています)。これはドライバにとってのAPIなので、ドライバはデフォルトを実装する責任があります。 Lambert材料をエミュレートするには、材料のGL_SPECULAR成分を0に設定します。 – datenwolf
この情報は、OpenGL仕様ではっきりと述べられています。 – datenwolf