我正在学习 WebGL,并希望执行以下操作:
使用片段着色器创建一个带有方孔的 3D 四边形。
它看起来像我需要一套gl_FragColor
基于gl_FragCoord
适当。
所以我应该:
a)gl_FragCoord
从窗口坐标转换为模型坐标,进行适当的几何检查,并设置颜色。
或者
b) 以某种方式将孔信息从顶点着色器传递到片段着色器。也许使用纹理坐标。这部分我不清楚。
我对实现上述任何一个都感到模糊,所以我会对其中任何一个进行一些编码提示。
我的背景是一个 OpenGL 老手,他没有跟上新的着色语言范式,现在正试图赶上......
编辑(27/03/2011):
我已经能够根据 tex coord 提示成功实现上述内容。我在下面的链接中写了这个例子:
小智 5
最简单的方法是使用纹理坐标。只需将 corrds 作为额外的属性数组提供,然后使用变量传递到片段着色器。着色器应包含以下内容:
顶点:
attribute vec3 aPosition;
attribute vec2 aTexCoord;
varying vec2 vTexCoord;
void main(){
vTexCoord=aTexCoord;
.......
}
Run Code Online (Sandbox Code Playgroud)
分段:
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
}
.....
}
Run Code Online (Sandbox Code Playgroud)