回答:
ストレージ修飾子in
とout
実際に含まれているとが取って代わるの目的持っているvarying
としますattribute
。彼らは、変数がそれぞれどのような定義に入れて外にシェーダのプット。参照してくださいGLSL 4.2リファレンスカード 7ページ:
in
:前のステージからシェーダーへのリンケージout
:シェーダーから次のステージへのリンケージattribute
:in
頂点シェーダーと同じvarying
:out
頂点シェーダーと同じin
、フラグメントシェーダーと同じ(注:上記の参照カードでは、これらは誤って反転されています。)補足として、後者の2つは非推奨です。4.2コアプロファイルには存在せず、互換性プロファイルにのみ存在します。
使用方法については、Antroから最新のOpenGLへの頂点シェーダーを使用してください。第2.2章:シェーダー:
#version 110
attribute vec2 position;
varying vec2 texcoord;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
texcoord = position * vec2(0.5) + vec2(0.5);
}
4.2コアでは次のように書き換える必要があります。
#version 420
in vec2 position;
out vec2 texcoord;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
texcoord = position * vec2(0.5) + vec2(0.5);
}
「古い」チュートリアルコードを見つける主な理由は、誰もがGLSL 3.3+互換のハードウェアにアクセスできるわけではないからだと思います。とにかく、良い最新のチュートリアルのために、ニコル・ボーラスの「 Learning Modern 3D Graphics Programming 」の方向に喜んであなたを向けます。