Depolama niteleyicileri in
ve out
aslında ve bunların yerini alan varying
ve bunun yerini alan bir amacı vardır attribute
. Bunlar değişkenler sırasıyla tanımlamak içinde koyar ve dışarı shader için koyar. Bakınız GLSL 4.2 referans kartı sayfa 7:
in
: önceki aşamadan itibaren gölgelendiricinin bağlantısı
out
: bir gölgelendiricinin bir sonraki aşamaya bağlanması
attribute
: in
köşe gölgelendiricisiyle aynı
varying
: out
köşe gölgelendiricisiyle aynı, in
parça gölgelendiriciyle aynı (Not: Bunlar yukarıda belirtilen referans kartında yanlış çevrilmişlerdir.)
Yan notta, son ikisinin türünün kullanımdan kaldırılmış olduğu belirtilir: 4.2 çekirdek profilinde yoktur, yalnızca uyumluluk profilinde bulunurlar.
Tam olarak ne yaparlar?
Kullanımda, köşe gölgelendiriciyi An intro'dan modern OpenGL'ye götürün . Bölüm 2.2: Gölgelendiriciler :
#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 çekirdekte şu şekilde yeniden yazılmalıdır:
#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);
}
Yardımcı Olmayan Öğreticiler
Sanırım "modası geçmiş" eğitim kodunu bulmanızın ana nedeni, herkesin GLSL 3.3+ uyumlu donanıma erişimi olmamasıdır. Her şeye rağmen, daha iyi ve güncel bir eğitim için, Nicol Bolas'ın Modern 3D Grafik Programlarını Öğrenme Programına yönlendirebilirim .