【发布时间】:2022-11-18 18:54:32
【问题描述】:
我正在尝试在顶点着色器中旋转纹理。我有一个指向纹理的指针,为了我的目的,它逆时针旋转了 90 度。我不想在调用glTexImage2D()之前手动旋转纹理。
我只能使用#version 120。
这是我原来的顶点着色器:
#version 120
attribute vec4 a_position;
attribute vec2 a_texCoord;
varying vec2 v_texCoord;
void main()
{
gl_Position = a_position;
v_texCoord = a_texCoord;
}
仅出于测试目的,我以这种方式修改了顶点着色器,但出现黑屏:
#version 120
const float w = 0.76;
float mat3 A = ( 1, 0, 0,
0, 1, 0,
0, 0, 1 );
attribute vec3 a_position;
attribute vec2 a_texCoord;
varying vec2 v_texCoord;
void main()
{
A = ( cos(w), -sin(w), 0,
sin(w), cos(w), 0,
0, 0, 1 );
gl_Position = A * vec4(a_position, 1.0f);
v_texCoord = a_texCoord;
}
【问题讨论】:
-
A * vec4(a_position, 1.0f);您正在将 3 X 3 矩阵与 vec 4 相乘。
-
您可以创建一个纹理矩阵并将其与顶点着色器中的纹理坐标相乘。