仪表盘指针可参考 shader

转载自: http://glslsandbox.com/e#43790.1




#ifdef GL_ES
precision mediump float;
#endif


#extension GL_OES_standard_derivatives : enable


uniform float time;
uniform vec2 mouse;
uniform vec2 resolution;


float nMax = 1000.0;


void main( void ) {

float n = ((cos(time)+1.0)/2.0)*nMax;      // Ici, on définit n en fonction du temps pour qu'il oscille entre 0 et nMax

if (gl_FragCoord.x > resolution.x*0.9) {          // Sert à afficher la barre à droite
float hr = gl_FragCoord.y/resolution.y;
float nr = n/nMax;
if (hr<nr+0.01 && hr>nr-0.01) {
gl_FragColor = vec4(1.0);
} else {
gl_FragColor = vec4(0.0);
}
return;
}

vec3 color;   // on définit la couleur, représentée par un vecteur 3D (x, y, et z correspondent au rouge, vert, bleu, et sont entre 0.0 et 1.0) (pour l'instant il est initialisé à [0,0,0] donc noir)

float a = gl_FragCoord.x;
float b = gl_FragCoord.y;

float r1 = mod(a, n);     // on définit r1 et r2 les restes respectifs de "a mod n" et "b mod n"
float r2 = mod(b, n);

if (r1 < r2+1.0 && r1 > r2-1.0) {          // Si r1 et r2 sont égaux (et donc que a et b sont congruents mod n) (marge d'erreur de 1)
color = vec3(r1/n, 1.0-r1/n, 0.0);     // alors on affiche de la couleur : plus de rouge si le reste se rapproche de n, et plus de vert si le reste se rapproche de 0
}



gl_FragColor = vec4(color, 1.0);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值