GLSL方法 构造矩阵

来源:互联网 发布:西西软件乐园下载 编辑:程序博客网 时间:2024/05/16 06:43

mat4 scale(float x, float y, float z)
{
 return mat4(
 x,0,0,0,
 0,y,0,0,
 0,0,z,0,
 0,0,0,1
 );
}
mat4 translate(float x, float y, float z)
{
 return mat4(
 1,0,0,0,
 0,1,0,0,
 0,0,1,0,
 x,y,z,1
 );
}
mat4 rotate(float x, float y, float z, float angle)
{
 float cos0 = cos(-angle);
 float sin0 = sin(-angle);
 float t = 1.0f - cos0;
 float txx = t * x * x;
 float txy = t * x * y;
 float txz = t * x * z;
 float tyy = t * y * y;
 float tyz = t * y * z;
 float tzz = t * z * z;
 float sinx = sin0 * x;
 float siny = sin0 * y;
 float sinz = sin0 * z;
 
 return mat4(
 txx+cos0,txy-sinz,txz+siny,0,
 txy+sinz,tyy+cos0,tyz-sinx,0,
 txz-siny,tyz+sinx,tzz+cos0,0,
 0,0,0,1
 );
}
0 0
原创粉丝点击