Ich versuche, eine Textur in einem Fragment-Shader zu rotieren, anstatt die Vertex-Shader- und Matrix-Transformationen zu verwenden.Eine Textur auf einem Fragment-Shader in GLSL ES drehen
Die Drehung hat den Drehpunkt in der Mitte.
Der Algorithmus funktioniert gut beim Rendern in einem Quad mit einer quadratischen Form, aber wenn das Quad eine rechteckige Form hat, wird das Renderergebnis durcheinander gebracht. Kann jeder das Problem erkennen?
Danke
varying vec2 v_texcoord;
uniform sampler2D u_texture;
uniform float u_angle;
void main()
{
vec2 coord = v_texcoord;
float sin_factor = sin(u_angle);
float cos_factor = cos(u_angle);
coord = (coord - 0.5) * mat2(cos_factor, sin_factor, -sin_factor, cos_factor);
coord += 0.5;
gl_FragColor = texture2D(u_texture, coord);
}
Ich bin auch für sie suchen! Ist es gelöst? – Samsy
Ich habe dies getan, indem ich eine Matrix außerhalb des Shaders zu drehen, http://stackoverflow.com/questions/31417365/how-to-rotate-a-texture-in-a-shader-android, können Sie dies auch finden hilfreich für herauszufinden, die Matrix-Komponenten, http://www.songho.ca/opengl/gl_projectionmatrix.html – HPP