słowa kluczowe we / wy w GLSL


46

Naprawdę nie rozumiem, jak używać słów kluczowych in/ outw GLSL, a Google jest nietypowo nieprzydatny.

Co dokładnie robią? Jak ich użyć, jeśli na przykład chcę przekazać zmienny zestaw zmiennych na wierzchołek do modułu cieniującego fragmenty?

Dosłownie każdy samouczek, który znajduję, używa słów kluczowych varying/ attributei to nie jest pomocne.

Odpowiedzi:


65

Kwalifikatory magazynu ini outfaktycznie mają cel, który zawiera i zastępuje cel varyingi attribute. Określają one, co zmienne są odpowiednio w puts i out put dla cieniującego. Zobacz kartę referencyjną GLSL 4.2 na stronie 7:

  • in: powiązanie z shaderem z poprzedniego etapu
  • out: połączenie z modułu cieniującego do następnego etapu
  • attribute: tak samo jak w inprzypadku shadera wierzchołków
  • varying: tak samo jak w outprzypadku cieniowania wierzchołków, tak samo jak w inprzypadku cieniowania fragmentów (Uwaga: są one błędnie odwracane w wyżej wymienionej karcie odniesienia).

Na marginesie należy zauważyć, że dwa ostatnie są w pewnym sensie przestarzałe: nie występują w profilu rdzenia 4.2, tylko w profilu zgodności.


Co dokładnie robią?

Jeśli chodzi o użycie, przenieś moduł cieniujący wierzchołek z wprowadzenia do nowoczesnego OpenGL. Rozdział 2.2: Shadery :

#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);
}

Powinien zostać przepisany w rdzeniu 4.2, ponieważ:

#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);
}

Nieprzydatne samouczki

Domyślam się, że głównym powodem, dla którego uważacie „przestarzały” kod samouczka, jest to, że nie każdy ma dostęp do sprzętu zgodnego z GLSL 3.3+. Niezależnie od tego, na dobry i bardziej aktualny samouczek chętnie poprowadzę cię w kierunku uczenia się nowoczesnego programowania grafiki 3D przez Nicola Bolasa .


2
@NicolBolas Ha! Już pomyślałem, że jest w tym coś podejrzanego. To jest błąd w tej karcie referencyjnej. Dzięki! :-)
Eric
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.