OpenGLES2.0游戏开发(下卷)高级特效和典型案例 扭曲的软糖
源码:gitee地址
扭曲的计算
原理:
《OpenGL ES 2.0游戏开发下卷》吴亚峰著 资源失效,需要的留言吧。
第一章第二节 扭曲的软糖。
测试用的模型:
效果:
扭曲代码:
float angleSpan = sin(u_Time) *3.0; // 使用sin time曲线控制扭曲
float yStart = 0.0; // 从y坐标0往上开始扭曲
float ySpan = 3.0; // 最大y坐标,(我也不知道这个模型y最高是几,测试了一下能用就用了)
float tempAS = angleSpan * (a_Position.y - yStart) / ySpan;
vec3 tPosition = a_Position.xyz;
if(a_Position.y > yStart){
tPosition.x = (cos(tempAS) *a_Position.x-sin(tempAS) *a_Position.z);
tPosition.z = (sin(tempAS) *a_Position.x+cos(tempAS) *a_Position.z);
}
gl_Position = u_MvpMatrix * vec4(tPosition,1);