Ich folge "Interactive Computer Graphics" von Ed Angel, speziell den Code für rotierende Würfel mit Textur. Die Vertex-Shader für diese (wie im Buch) ist wie folgt:Was die Vertex- und Fragment-Shader sein sollten, um einen Würfel mit Textur in der Version 440 zu zeichnen
#version 150
in vec4 vPosition;
in vec4 vColor;
in vec2 vTexCoord;
out vec4 color;
out vec2 texCoord;
uniform vec3 theta;
void main()
{
........
........
// code for rotation
........
color = vColor;
texCoord = vTexCoord;
gl_Position = rz * ry * rx * vPosition;
}
Und das Fragment-Shader-Code ist:
#version 150
in vec4 color;
in vec2 texCoord;
out vec4 fColor;
uniform sampler2D texture;
void main()
{
fColor = color * texture2D(texture, texCoord);
}
[Der Link für den gesamten Code ist here. Schauen Sie sich einfach den Code für example 8
an.
Ich versuche, dies mit #version 440 core
zu implementieren. Wenn ich das mache, bekomme ich nur einen schwarzen Würfel. Die Textur wird nicht angezeigt.
Welche Änderung an dem obigen Code sollte ich vornehmen, um die Textur korrekt anzuzeigen?
Ändern Sie Textur2D in Textur (aber das ist eine Nebensache). Wenn die Shader nicht mit der Version kompatibel sind, erhalten Sie einen Compilerfehler. – BDL
@BDL Ich habe das auch versucht. Aber das Ergebnis ist das Gleiche. – Majis
Versuchen Sie mit 'fColor = vec4 (1.0);' Wenn Sie auf diese Weise einen weißen Würfel erhalten, liegt das Problem wahrscheinlich an der Art, wie Ihre Textur erstellt/hochgeladen/gebunden wird. – bernie