我知道我可以使用gl_Position来获取每个顶点的位置,但是如果可以在片段着色器中获取每个像素的位置?
我想更改某些像素区域的alpha值.
解决方法
vec2 gl_FragCoord
它将以像素为单位返回屏幕上片段的位置.
如果您通过统一的vec2 screenResolution,那么您可以使用这两个值来确定屏幕上的确切位置,像素,哪个部分等.
这是一个内置变量,因此您可以在片段着色器中随时使用它.
以下是一个用于演示的示例:http://goo.gl/AG7UO
如果你想要片段的woorld坐标,那么你应该使用变量变量.
顶点着色器:
varying vec3 vPos; attribute vec3 aVertexCoord; uniform mat4 uMVMat; uniform mat4 uProjMat; void main() { vPos = uMVMat * aVertexPos; gl_Position = uProjMat * vPos; }
片段着色器:
varying vec3 vPos; void main() { // do something }
希望这可以帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。