Hi,
ich habe aktuell eine Wireframe-Darstellung, die korrekt funktioniert. Für die Objekte wird glPolygonMode(GL_FRONT_AND_BACK,GL_LINE) gesetzt und der Fragmentshader ist auch recht simpel, die von außen per "inputColour" gesetzte Farbe wird 1:1 verwendet:
|
Quellcode
|
1
2
3
4
5
6
7
8
|
#version 130
uniform vec4 inputColor;
out vec4 FragColor;
void main()
{
FragColor=inputColor;
}
|
Jetzt würde ich das ganze gerne auf eine Solid-Darstellung umbauen. Erster Schritt: glPolygonMode(GL_FRONT_AND_BACK,GL_FILL) setzen. Das Ergebnis ist ein schwarzer Klotz, was mangels Licht auch logisch ist. Zweiter Schritt: den Shader ändern, damit AmbientLight eingesetzt wird (der Code basiert auf dem von
https://learnopengl.com/Lighting/Basic-Lighting ):
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
#version 130
uniform vec4 inputColor;
out vec4 FragColor;
void main()
{
float ambientStrength = 0.2;\n"
vec3 ambient = ambientStrength * lightColor;
vec3 result = ambient * inputColor;
FragColor = vec4(result, 1.0);
}
|
Compilefehler gibt es keine, aber die Objekte sind komplett verschwunden, also noch nicht mal mehr als schwarzer Blob zu sehen!
Was könnte da falsch sein?
UPDATE: Es gibt DOCH einen Compilefehler: "lightColor" ist undefiniert - wenn ich eine feste Lichtfarbe direkt im Shader setzen will, wie mache ich das am cleversten? Danke!