90 - Versuche
04 - Texturen Perspektiven - Korrektur
Die Textur-Koordinaten kann man im Shader auch mit einer Matrix multipizieren.
Dies geschieht ähnlich, wie bei den Vertex-Koordinanten, der grösste Unterschied dabei ist, das es sich um 2D-Koordinaten handelt.
procedure TForm1.InitScene;
var
bit: TBitmap;
begin
Textur.LoadTextures('mauer.bmp');
Vertex-Shader:
#version 330
layout (location = 0) in vec3 inPos; // Vertex-Koordinaten
layout (location = 10) in vec4 inUV; // Textur-Koordinaten
uniform mat4 mat;
uniform mat4 texMat;
out vec4 UV0;
//out vec2 UV0;
void main(void)
{
gl_Position = mat * vec4(inPos, 1.0);
UV0 = texMat * (inUV- vec4(-0.5, -0.5, 0.0, 0.0));
}
Fragment-Shader:
#version 330
//in vec2 UV0;
in vec4 UV0;
uniform sampler2D Sampler;
out vec4 FragColor;
void main()
{
// FragColor = texture( Sampler, UV0 );
FragColor = texture2DProj( Sampler, UV0 );
}