90 - Versuche

04 - Texturen Perspektiven - Korrektur

Selfhtml

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 );
}



zurück