2

我正在学习 WebGL,并想做以下事情:

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

看来我需要gl_FragColor根据gl_FragCoord适当的设置。

我也应该:

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

或者

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

我对实现上述任何一个都模糊不清,所以我会在其中任何一个上获得一些编码提示。

我的背景是一个 OpenGL 的老前辈,他没有跟上新的着色语言范式,现在正试图赶上……

编辑(2011 年 3 月 27 日):

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

带孔的四边形 - 示例

带孔的四边形 - 示例

4

1 回答 1

5

最简单的方法是使用纹理坐标。只需将 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
}
.....
}
于 2011-03-24T12:03:08.440 回答