理解glsl语言的gl_FragCoord与u_resolution

55 篇文章 4 订阅
14 篇文章 1 订阅
这篇博客介绍了OpenGL中的两个关键概念:u_resolution代表画布尺寸,而gl_FragCoord提供了当前片元的窗口坐标。通过示例代码解释了如何将gl_FragCoord的坐标归一化到0.0-1.0之间,并展示了不同角落的坐标对应的颜色值,帮助读者深入理解这两个概念在图形渲染中的应用。
摘要由CSDN通过智能技术生成

1 概念

(1)u_resolution 是画布尺寸,即代表画布宽高

(2)gl_FragCoord:是一个 vec4 类型的变量 (x, y, z, 1/w),其中 x, y 是当前片元的窗口坐标。直译就是片元坐标

2 结合例子理解

如下效果和代码

#ifdef GL_ES
precision mediump float;
#endif
// u_resolution (画布尺寸)
uniform vec2 u_resolution;
void main() {
	vec2 st = gl_FragCoord.xy/u_resolution;
	gl_FragColor = vec4(st.x,st.y,0.0,1.0);
	
}

 

如上画布宽高:(950,600)即u_resolution的宽高值是(950,600);

那么gl_FragCoord的取值范围就是 x在(0,950),y在(0,600)

所以vec2 st = gl_FragCoord.xy/u_resolution; st的x和y值都在0.0-1.0之间;

gl_FragCoord.xy/u_resolution在四个角的值为

左下角(0,0)处:x=0/950 y=0/600 st为(0.0,0.0);颜色值为(0.0,0.0,0.0,1.0)黑色

左上角(0,600)处:x=0/950 y600/600 st为(0.0,1.0);颜色值为(0.0,1.0,0.0,1.0)绿色

右上角(950,600)处:x=950/950 y=600/600 st为(1.0,1.0) ;颜色值为(1.0,1.0,0.0,1.0)黄色

右下角(950,0)处:x=950/950 y=0/600 st为(1.0,0.0);颜色值为(1.0,0.0,0.0,1.0)红色

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨大大28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值