OpenGL:关于纹理映射时任意四边形中的插值问题-CSDN博客
上次是使用逆双线性插值的方法解决四边形纹理映射时产生的折痕问题。
其实也有点问题,就是双线性插值会使得纹理产生一点扭曲。
不是投影的效果。
想达到纹理投影的效果,可以使用透视插值。
具体就是,和逆双线性一样,都不能使用OpenGL自带的插值。
就需要在着色器中修改。
in vec2 aPos_out;
out vec4 FragColor;
uniform sampler2D ourTexture;
uniform mat3 transformMatrix;//将变换矩阵传递进来
void main()
{
//aPos_out是窗口坐标,-1~1之间
vec3 cache = transformMatrix*vec3((aPos_out),1.0);
//cache_2是变换后的坐标,也就是纹理坐标0~1之间
vec2 cache_2 = cache.xy/cache.z;
FragColor = texture2D(ourTexture, cache_2);
}
关于将变换矩阵传给着色器的问题