Jak wyglądają domyślne shadery GLSL? dla wersji 330
Jak wyglądają domyślne shadery wierzchołków, fragmentów i geometrii GLSL dla wersji # 330?
Będę używał #version 330
GLSL w wersji 3.30 NVIDIA via CG compiler, ponieważ to obsługuje moja karta graficzna.
Z domyślnymi shaderami mam na myśli shadery, które robią dokładnie to samo, co karta graficzna, gdy program shadera jest wyłączony.
Nie mogę znaleźć dobrego przykładu dla #version 330
. Googlowałem cały dzień. Nie wiadomo, czy wywołany jest termin default shader coś innego jak banalne lub podstawowe i jeśli dlatego nie mogę znaleźć.
Wszelkie zalecenia dotyczące książki z wersją 330 lub link do łatwego samouczka dla początkujących z wersją 330 byłyby również świetne.
Przykład trywialnego cieniowania wierzchołków w #wersji 110, robi domyślną transformację wierzchołków
#version 110
void main()
{
gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
}
Przykład trywialnego shadera fragmentów w # wersji 110, zmienia kolor na czerwony
#version 110
void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
1 answers
Nie ma "domyślnych" shaderów z OpenGL. Wygląda na to, że chcesz bardzo prosty przykład shadera, który przekształca wierzchołki w spację i nadaje im kolor, więc proszę bardzo: {]}
Vertex shader:
#version 330
layout(location = 0)in vec4 vert;
uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;
void main()
{
gl_Position = projection * view * model * vert;
}
Fragment shader:
#version 330
out vec4 fragColor;
void main()
{
fragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
Rdzeń OpenGL 3.3 profile zmniejsza wsparcie dla wielu starych rzeczy o stałych funkcjach, takich jak stos matrix. Od ciebie oczekuje się obsługi własnych matryc i wysyłania ich do shaderów. Nie ma ftransform, a gl_Position jest prawie jedyna poprawna zmienna gl_*.
Podczas gdy glBindAttribLocation nie jest przestarzała, preferowaną metodą definiowania lokalizacji atrybutów wierzchołków jest "layout (location = x)" w GLSL.
W cieniowaniu wierzchołków, "atrybut" jest teraz "w", a "zmienny" jest teraz "poza". W cieniowaniu fragmentów "zmienna" jest teraz "in", a " gl_FragColor "jest definiowana przez zmienną" out". Wierzę, że gl_FragColor jest nadal poprawny, ale teraz Można użyć zmiennej out do zdefiniowania kolor.
Ten samouczek jest bardzo dobry i uczy core OpenGL i GLSL 3.30, polecam go użyć, aby pomóc ci dowiedzieć się więcej o GLSL. Pamiętaj również, że strona referencyjna GLSL jest twoim przyjacielem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-18 11:30:22