有人可以尝试将给定的动画实现到 WebGL 着色器示例中吗?这对于像我这样学习 WebGL 的人来说会很棒。
问问题
5888 次
1 回答
20
我已经在http://www.brainjam.ca/stackoverflow/webglspiral.html实现了你的动画。如果您的浏览器不支持 WebGL,它将给您一个“WebGL 不支持”消息。它改编自mrdoob 创建的沙箱。基本思想是显示一个矩形表面(由两个三角形组成)并将着色器应用于该表面。
实际的着色器代码如下:
uniform float time;
uniform vec2 resolution;
uniform vec2 aspect;
void main( void ) {
vec2 position = -aspect.xy + 2.0 * gl_FragCoord.xy / resolution.xy * aspect.xy;
float angle = 0.0 ;
float radius = length(position) ;
if (position.x != 0.0 && position.y != 0.0){
angle = degrees(atan(position.y,position.x)) ;
}
float amod = mod(angle+30.0*time-120.0*log(radius), 30.0) ;
if (amod<15.0){
gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
} else{
gl_FragColor = vec4( 1.0, 1.0, 1.0, 1.0 );
}
}
螺旋会随着浏览器窗口调整大小,但您可以轻松地选择固定大小的画布。
更新: 只是为了好玩,这是 jsfiddle 中完全相同的实现:http: //jsfiddle.net/z9EmN/
于 2011-01-19T23:29:15.010 回答