使用 gl_FragCoord 在四边形中创建一个洞
我正在学习 WebGL,并且想要执行以下操作:
使用片段着色器创建一个带有方孔的 3D 四边形。
看来我需要根据 gl_FragCoord
适当地设置 gl_FragColor
。
我应该:
a) 将 gl_FragCoord
从窗口坐标转换为模型坐标,进行适当的几何检查,并设置颜色。
或者
b) 以某种方式将孔信息从顶点着色器传递到片段着色器。也许使用纹理坐标。我对这部分不清楚。
我对实现上述任一内容感到模糊,因此我希望获得有关其中任一内容的一些编码提示。
我的背景是一个 OpenGL 旧计时器,他没有跟上新的着色语言范例,现在正在努力赶上......
编辑(27/03/2011):
我已经能够成功地实现上述基于在 tex 坐标提示上。我在下面的链接中写了这个示例:
I am learning WebGL, and would like to do the following:
Create a 3D quad with a square hole in it using a fragment shader.
It looks like I need to set gl_FragColor
based on gl_FragCoord
appropriately.
So should I:
a) Convert gl_FragCoord
from window coordinates to model coordinates, do the appropriate geometry check, and set color.
OR
b) Somehow pass the hole information from the vertex shader to the fragment shader. Maybe use a texture coordinate. I am not clear on this part.
I am fuzzy about implementing either of the above, so I'd appreaciate some coding hints on either.
My background is that of an OpenGL old timer who has not kept up with the new shading language paradigm, and is now trying to catch up...
Edit (27/03/2011):
I have been able to successfully implement the above based on the tex coord hint. I've written up this example at the link below:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最简单的方法是使用纹理坐标。只需将 Corrds 作为额外的属性数组提供,然后使用变量传递到片段着色器。着色器应包含以下内容:
顶点:
片段:
The easiest way would be with texture coords. Simply supply the corrds as an extra attribute array then pass through to the fragment shader using a varying. The shaders should contain something like:
vertex:
fragment: