opengl 使用片段着色器旋转sampler2D纹理

k7fdbhmy  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(158)

根据我之前的问题here,如果我想在片段着色器中旋转sampler2D纹理,该怎么办?
that问题中,我旋转了顶点着色器内的纹理

#version 120

attribute vec3 a_position;
attribute vec2 a_texCoord;
varying vec2 v_texCoord;

void main()
{
    const float w = 1.57;
    mat3 A = mat3(cos(w), -sin(w), 0.0,
                  sin(w),  cos(w), 0.0,
                  0.0,     0.0,    1.0);
    gl_Position = vec4(A * a_position, 1.0);
    v_texCoord = a_texCoord;
}

但是我的片段着色器应用了一个针对顺时针旋转纹理的大量修改,所以使用顶点着色器,我有一个水平效果,该效果由片段着色器应用到垂直坐标。
是否可以在应用修改之前 * 旋转 * sampler2D

k97glaaz

k97glaaz1#

不能旋转sampler2D,但可以旋转纹理坐标:

#version 120

attribute vec3 a_position;
attribute vec2 a_texCoord;
varying vec2 v_texCoord;

void main()
{
    const float w = 1.57;
    mat2 uvRotate = mat2(cos(w), -sin(w),
                         sin(w),  cos(w));
    gl_Position = vec4(a_position, 1.0);
    v_texCoord = uvRotate * a_texCoord;
}

相关问题