卜若的代码笔记-webgl系列-第二十二章:glsl的应用(二)>利用shader让图像旋转

1 在上一章中,我们发现了一个奇怪的bug,我们的图像居然是反的!!卧槽??这怎么能忍?主要原因是我没有分配正确的uv,这其实并不重要,我只需要然fragShader里面的uv坐标旋转一下就行啦~

 

旋转公式:

              float s = sin(coe)*(v_TexCoord.x-0.5)+cos(coe)*(v_TexCoord.y-0.5);
              float t = -cos(coe)*(v_TexCoord.x-0.5) + sin(coe)*(v_TexCoord.y-0.5);

              vec2 vtep = vec2(s+0.5,t+0.5);

然后...直接上Shader了,基础的都在前面,要好好学习呀....

   <script id="fragment_shader" type="x-shader/x-fragment">


             uniform sampler2D u_Sampler;
             varying vec2 v_TexCoord;

             uniform float coe;


             vec4 tp = vec4(1.0,1.0,1.0,1.0);

             void main() {

              float s = sin(coe)*(v_TexCoord.x-0.5)+cos(coe)*(v_TexCoord.y-0.5);
              float t = -cos(coe)*(v_TexCoord.x-0.5) + sin(coe)*(v_TexCoord.y-0.5);

               vec2 vtep = vec2(s+0.5,t+0.5);

              gl_FragColor = texture2D(u_Sampler, vtep);
             // if(gl_FragColor == tp){
             // gl_FragColor = vec4(1.0,1.0,1.0,0.0);
             // }
//
//
             }

    </script>
    <script id="vertexShader" type="x-shader/x-vertex">

          uniform float vt;
          uniform mat4 u_MvpMatrix;
          varying vec2 v_TexCoord;
          void main() {

           vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );


           v_TexCoord = mvPosition.xy*0.2;

          // v_TexCoord = vec2(cos(3.14159/4.0)*v_TexCoord.x+sin(3.14159/4.0)*v_TexCoord.y,-sin(3.14159/4.0)*v_TexCoord.x + cos(3.14159/4.0)*v_TexCoord.y);


           gl_Position = projectionMatrix * mvPosition;


         }

    </script>

旋转之后的效果:

果断雪乃=。= 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值