Depolama niteleyicileri inve outaslında ve bunların yerini alan varyingve 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: inköşe gölgelendiricisiyle aynı
varying: outköşe gölgelendiricisiyle aynı, inparç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 .