Mi a különbség a uniform és a varying közt miért lettek, valamint mikor használják őket? HLSL
Nem kérek linkeket itt szeretném megérteni!
Cserébe pedig adok zöldet.
Köszönöm!
"Nem kérek linkeket itt szeretném megérteni!
Cserébe pedig adok zöldet."
The big deal.
LOL
uniform: glsl szemszögéből konstans, program (amelyik létrehozta a shadert) tudja megváltoztatni amikor akarja
varying: vertex és fragment shader között megosztott változó (ha egyik átírja másik is úgy látja)
"program (amelyik létrehozta a shadert) tudja megváltoztatni amikor akarja"
Kösz a segit nyomtam zöldet, de azóta informálódtam és nem úgy van hogy az uniformot nem lehet megváltoztatni mivel konstans? Inicializáltnak kell lennie mielőtt a fragment vagy egyéb shader lefut és ahogy írtad konstans.
A varyingről pont úgy informálódtam ahogy írtad.
Az uniform az csak a shader oldalán konstans. Tehát ha pl:
uniform float x;
void main(void)
{
x = 1;
...többi kód
}
Akkor ez nem fog lefordulni mivel a shaderben konstant értéket képvisel ergo nem lehet megváltoztatni. Viszont a programodban:
GLint loc = glGetUniformLocation(ProgramObject, "x");
glUniform1f(loc, 0.600);
glUniform1f(loc, 0.314);
Ezt bármikor meg tudod tenni. Tehát egy olyan változó ami egyik oldalról nézve konstans csak. (Ez egy nagyon hasznos dolog, pl. hogy ha mondjuk nagyon sok ugyanolyan dolgot rajzolsz ki ne kelljen többszázféle shadert csinálnod mert mondjuk más nagyítást akarsz alkalmazni és emiatt egy változó más)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!