Einige Wochen lerne ich OpenGL auf berühmte http://learnopengl.com und habe Fragen über eine Organisation mehrerer Materialien (Shader). In diesem Tutorial wird mit Shader-Klasse, die Shader-Programm aus der Liste der vert/frag Shadern komponieren:Die beste Möglichkeit, mehrere Shader zu verwenden
Shader shader("vert.glsl", "frag.glsl");
Danach für Shader I Uniformen erstellen:
glUniformMatrix4fv(glGetUniformLocation(shader.Program, "model"), 1, GL_FALSE, glm::value_ptr(model));
glUniformMatrix4fv(glGetUniformLocation(shader.Program, "view"), 1, GL_FALSE, glm::value_ptr(view));
etc.
Und am Ende erhalten wir einen Shader Programm. Wie kann ich in diesem Fall mehrere Shader erstellen? Ich versuche zu machen:
Shader shader("vertDiff.glsl", "fragDiff.glsl");
Shader shaderGlass ("vertGlass.glsl", "fragGlass.glsl");
Shader shaderLight("vertLight.glsl", "fragLight.glsl")
und danach habe ich machen Uniformen für .glsl für jeden Shader:
glUniformMatrix4fv(glGetUniformLocation(shader.Program, "model"), 1, GL_FALSE, glm::value_ptr(model));
glUniformMatrix4fv(glGetUniformLocation(shaderGlass.Program, "model"), 1, GL_FALSE, glm::value_ptr(model));
Aber Schattierung nicht ordnungsgemäß funktioniert. Die gleichen Uniformen müssen für jeden Shader ein paar Mal deklariert werden und das Programm falsch machen. Wie ist es richtig, diesen Teil zu machen? Danke und Entschuldigung für meine blöde Frage :)
Vielen Dank für glProgramUniform * !!! Es funktioniert perfekt! : D – OpenglNoob