使用gl_FragCoord在四边形中创建一个洞

时间:2011-03-24 11:34:46

标签: glsl webgl

我正在学习WebGL,并希望做到以下几点:

使用片段着色器在其中创建一个带方孔的3D四边形。

看起来我需要根据gl_FragColor正确设置gl_FragCoord

我应该这样:

a)将gl_FragCoord从窗口坐标转换为模型坐标,进行相应的几何检查,并设置颜色。

OR

b)以某种方式将洞信息从顶点着色器传递到片段着色器。也许使用纹理坐标。我不清楚这一部分。

我对实现上述任何一个都很模糊,所以我会对其中任何一个提出一些编码提示。

我的背景是一个OpenGL旧计时器,他没有跟上新的着色语言范例,现在正试图赶上......

编辑(27/03/2011):

我已经能够基于tex coord提示成功实现上述内容。我在下面的链接中写了这个例子:

Quads with holes - example

Quads with holes - example

1 个答案:

答案 0 :(得分:4)

最简单的方法是使用纹理坐标。只需将corrds作为额外的属性数组提供,然后使用变量传递给片段着色器。着色器应包含以下内容:

顶点:

attribute vec3 aPosition;
attribute vec2 aTexCoord;

varying vec2 vTexCoord;

void main(){
     vTexCoord=aTexCoord;
     .......
}

片段:

varying vec2 vTexCoord;

void main(){
     if(vTexCoord.x>{lower x limit} && vTexCoord.x<{upper x limit} && vTexCoord.y>{lower y limit} && vTexCoord.y<{upper y limit}){
discard; //this tell GFX to discard this fragment entirly
}
.....
}