html - WebGL:如何获取片段着色器中每个像素的位置?

标签 html opengl-es webgl

我知道我可以使用 gl_Position 来获取每个顶点的位置,但是是否有可能在片段着色器中获取每个像素的位置?

我想改变一些像素区域的alpha值。

最佳答案

vec2 gl_FragCoord

它将以像素为单位返回片段在屏幕上的位置。 如果您传递统一的 vec2 screenResolution,那么您可以使用这两个值来确定像素在屏幕上的确切位置,在哪个部分等等。

这是一个内置变量,因此您可以在片段着色器中随时使用它。

这里有一个用法示例只是为了演示:http://goo.gl/AG7UO

如果你想要片段的世界坐标,那么你应该使用varying变量。

顶点着色器:

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
}

希望这对您有所帮助。

关于html - WebGL:如何获取片段着色器中每个像素的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17339149/

相关文章:

javascript - 使用 jQuery 将 Class 添加到 div 中的前 5 个元素

javascript 或 jquery 在不同的按钮点击上更改不同的图像

javascript - 悬停时的菜单驱动器效果

iphone - 在 iOS 中创建可平移的 3D 空间

Three.js - BinaryLoader 与 BufferGeometry 对于大型网格?

javascript - 如何使用 WebGL 着色器切割对象?

jquery - "Unscrollable"100vh 部分捕捉到可滚动的网站内容

android - 专为 Android ARM5TE 构建的应用程序,但设备支持 ARM5T

android - 快速暂停/恢复应用程序时 Android NDK 中的 SurfaceView 崩溃

javascript - 如何将 .STL 转换为 .js?