gpt4 book ai didi

opengl-es - 我可以在顶点着色器中访问 gl_PointCoord 吗?

转载 作者:行者123 更新时间:2023-12-05 05:28:08 25 4
gpt4 key购买 nike

gl_PointCoord 返回表示该像素处 UV 贴图坐标的 2D 向量。但它似乎只在片段着色器中可用。我知道您可以使用 varying 将值从顶点着色器发送到片段着色器,但是您能以其他方式发送吗?我可以获得当前顶点的 UV 坐标吗?

是否可以在顶点着色器中访问 gl_PointCoord

最佳答案

“该像素处的 UV 映射坐标” - 的确如此,但在顶点着色器中您没有任何像素。你错过了点 Sprite 的实际工作方式。单个顶点着色器调用发出大于 1 像素的 gl_PointSize 会导致针对该点的多个片段着色器调用(因为该点覆盖多个像素)。这些片段根据它们在这个更大的点 Sprite 中的位置获得它们的 gl_PointCoord。但是覆盖多个片段的每个点 Sprite 总是来自单个顶点。所以从概念上讲,每个顶点的 gl_PointCoord 只是每个顶点的 (0.5, 0.5),但最后即使这样也没有意义,因为确实没有任何像素的概念,更不用说顶点着色器中的每个像素 UV 坐标了。

“但是你能用另一种方式发送吗” - 我确信这是相当非正式的意思,因为你当然不能将任何数据从片段着色器发送到顶点着色器,因为图形管道仅在一个方向上工作。

编辑:关于您的评论,如果不使用点 Sprite ,gl_PointCoord 变量根本没有任何意义。您不能将它用作一般的 UV 坐标(片段着色器应该如何得出合理的值)。为此,您必须自己从顶点着色器中输出一个有效的纹理坐标(作为 varying),然后将其插值到要在片段着色器中访问的片段上,最终可能会传递到顶点着色器中作为一个额外的属性,和往常一样。

关于opengl-es - 我可以在顶点着色器中访问 gl_PointCoord 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13759424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com