私はOpenGLを使ってプログラムを書いています。最近、OpenGL Shading Language を学び始めました。私は初心者です。そのため、回答に詳細を記入してください。
私の質問は次のとおりです。
- GLSL のさまざまなタイプの変数 (修飾子) は何ですか?
- それらは何に使用されますか?
- それらは互いにどう違うのですか?
私は、頂点間で補間されるために頂点シェーダーからフラグメントシェーダーに渡される「可変」変数にのみ精通しています。それ以外は、私は何も知りません。
私はOpenGLを使ってプログラムを書いています。最近、OpenGL Shading Language を学び始めました。私は初心者です。そのため、回答に詳細を記入してください。
私の質問は次のとおりです。
私は、頂点間で補間されるために頂点シェーダーからフラグメントシェーダーに渡される「可変」変数にのみ精通しています。それ以外は、私は何も知りません。
OpenGL 3+ の場合:
varying
非推奨ですconst
は...まあ、定数です!uniform
ドローコールごと(最大)の値ですin
glAttribDivisor とハードウェア インスタンス化を使用している場合は、前のパイプライン ステージからの入力、つまり最大で頂点ごと (またはフラグメントごと) の値、プリミティブごとの値です。out
次のステージへの出力用ですフラグメント シェーダの出力について: OpenGL3 以降では、フラグメント シェーダ出力の組み込み変数 ( などgl_FragColor
、 の顕著な例外を除く) のほとんどは非推奨であり、ユーザー定義の変数gl_FragDepth
に置き換える必要があります。out
デフォルトのフレームバッファに出力している場合、フラグメント シェーダの出力として宣言したものはすべてカラー バッファに格納されます。out
FBO を複数のカラー バッファー (つまり、複数のレンダー ターゲット) にバインドした場合は、各変数を を介して正しいカラー バッファー インデックスに手動でバインドする必要がありますglBindFragDataLocationIndexed
。
GLSL (「サーバー」) 側と OpenGL (「クライアント」) 側の両方について必要なすべての詳細を見つけることができます。
チュートリアルを確認してください: http://www.lighthouse3d.com/tutorials/glsl-tutorial/
均一変数があります(すべてのスレッドで静的)
属性変数 (頂点ごとに注入)
さまざまです(ご存じのとおり)