2011-12-23 17 views
1

GLSLの新しいバージョンでは、標準の組み込み属性とユニフォームの量が削減されます。 gl_Colorおよびgl_ModelViewMatrixはGLES 2.0に含まれていません。GLSLの属性のオーバーライド

これらの名前をオーバーライドし、シェーダー内で別の変数タイプに再定義しても問題ありませんか?あなた自身で設定した場合、初期のGLSLバージョンで動作するときに、自分自身でgl_ModelViewMatrixが統一されていると宣言しますか?早期GLSLで

gl_Colorは、クライアントがglColor()またはglColorPointer()呼び出された場合に応じて、頂点ごとまたは全通話のためにすることができます - あなたは、実際にはそれように、一度属性を設定することができます均一になりますか?またはこのあいまいさに対処する方法は?

(これは、すべてのロード時にいくつかの簡単な検索・置換するスクリプトとターゲットの範囲を越えて動作シェーダを作るための探求である)

答えて

2

あなたがそれらを上書きすることはできません、あなたはできません変数名の先頭に "gl _"を付けてください(論文はこれを私に教えてくれました)。組み込みの型/変数を変更することは全く不可能です。

+2

残念ながら私は論文を見つけることができませんが、私は」でシェーダを付加しますこれが正しいと確信しています。 –

+0

OpenGL-3コアおよびGLSL 1.40標準では、カスタム変数に 'gl_'というプレフィックスを付けて名前を付けることはできません。ただし、プリプロセッサのトリッキーを使い、 "再導入"することは可能です。 – datenwolf

+0

@datenwolfはい私の計画だったが、私はちょっとgl_Colorに固執している – Will

1

複数のバージョンのGLSLを簡単にサポートしたい場合は、マクロを使用することをお勧めします。たとえば、あなたのようにあなたの入力色を定義することができます。GLSLの古いバージョンで実行するように、そして、

#ifndef color 
in vec4 color; 
#endif 

、あなたは#define color gl_Color

関連する問題