[解決済み] 頂点シェーダとフラグメントシェーダにおけるgl_Colorとgl_FrontColorの関係を教えてください。
質問事項
バーテックスとフラグメントのパススルーシェーダーがあります。
バーテックスシェーダ
void main(void)
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
フラグメントシェーダ
void main(void)
{
gl_FragColor = gl_Color;
}
これらは空のレンダリングを生成します(glClearBufferのように背景色ではなく黒)。
gl_FrontColorをgl_Colorに設定するように頂点シェーダを修正すると、OpenGlバッファがそのままレンダリングされます ... パススルーシェーダに期待される動作です。
void main(void)
{
gl_FrontColor = gl_Color; //Added line
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
頂点シェーダで gl_FrontColor を設定すると、フラグメントシェーダで gl_Color の値がどのように変化するのか、混乱しています。私は何を見逃しているのでしょうか?
解決方法は?
gl_Color
は、場所によって意味が異なります。
バーテックスシェーダーで
gl_Color
は、ユーザーから渡された主な頂点ごとの色属性を表します。これは
glColor*
の呼び出しや配列データの取得は
glColorPointer
.
フラグメントシェーダーで
gl_Color
は、レンダリングされる三角形の面を補間する色を表します。三角形には前面と背面があることを覚えておいてください。面カリングを有効にすると、どちらか一方(または両方)の面はすべてレンダリングされません。しかし、面カリングをオフにすると、両方の面がレンダリングされます。
三角形の特定の面に基づいて、頂点ごとの出力値が異なると便利なことがよくあります。原色には前面カラーと背面カラーがあり、正面を向いた三角形と背面を向いた三角形のカラーを表します。これに対するバーテックスシェーダ出力は
gl_FrontColor
と
gl_BackColor
.
両面レンダリングを行う場合、フラグメントシェーダの
gl_Color
の入力は何の意味も持ちません。フロントフェイス・レンダリングのみを行う場合は、以下のように
gl_FrontColor
.
関連
-
[解決済み] テスト
-
[解決済み] X リクエストが失敗したときのエラー。BadValue (整数パラメータが操作の範囲外です)
-
[解決済み] FreeGLUTとGLFWの違いは何ですか?[クローズド]
-
[解決済み] ハードウェアカーソルとはどのようなもので、どのように機能するのですか?
-
[解決済み] 頂点シェーダとフラグメントシェーダにおけるgl_Colorとgl_FrontColorの関係を教えてください。
-
[解決済み] OpenGL GLXエクステンションはサポートされていません
-
[解決済み] glRotate(angle,x,y,z), この場合のx,y,zは何ですか?
-
[解決済み] glutSpecialFuncを正しく使うには?
-
opengl glGetIntegerv エラーを使用します。アクセス違反 ロケーション0x0000000000000000を実行中
-
[解決済み] OpenGLのフレームバッファとレンダーバッファの概念と違いについて教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] FreeGLUTとGLFWの違いは何ですか?[クローズド]
-
[解決済み] glEnableVertexAttribArrayは具体的に何をするのですか?
-
opengl glGetIntegerv エラーを使用します。アクセス違反 ロケーション0x0000000000000000を実行中
-
GLMライブラリの概要 glm::transform, glm:scale, glm::rotate
-
[解決済み] gl_FragColorとout vec4カラーを使用する?
-
[解決済み] OpenGL - glDepthMaskの使い方についての質問です。
-
[解決済み】GLSLシェーダをデバッグする方法は?
-
[解決済み】OpenGLのテキストレンダリングは、バージョン4.1現在、何が最先端なのでしょうか?[クローズド]。
-
[解決済み] GLSLシェーダーの正しいファイル拡張子は何ですか?[クローズド]。
-
[解決済み] glActiveTextureとglBindTextureの違いと関係