使用顶点着色器确定线条方向

3

我希望能够使用顶点和片元着色器计算每个像素线的方向到眼睛坐标并存储该值。我的想法是,在模型视图变换后,对每对顶点使用atan2(Gy/Gx)计算方向梯度,然后将该值量化为颜色强度传递给片元着色器。如何获取每对顶点的位置以实现此目的,或者是否应该使用其他方法?
谢谢

1个回答

1
如何访问顶点对的位置?
如果您只是使用一个顶点和一个片段着色器,那么您无法轻松地做到这一点。简单的方法是使用几何着色器。在此着色器阶段中,您可以访问组成线段的顶点对。然后就可以轻松确定线的方向并将其传递给片段着色器。
如果由于目标受众的缘故,几何着色器不可行,则可以复制您的几何体(在每个顶点中存储实际顶点加上下一个顶点),然后在顶点着色器中进行计算。

抱歉,我应该说使用的是OpenGL 2.1版本,因此无法访问几何着色器。我知道可以将下一个顶点传递给着色器,但如何确定当前正在渲染的顶点呢?我目前使用的是drawElements函数。我需要做像是在glBegin(GL_QUADS)之后列出所有顶点,然后在每个调用之后传递一个uniform vec3,带有下一个顶点位置吗? - Brett
@Brett,你想使用一个额外的顶点属性,总是将下一个顶点放入其中。因此,你的顶点数组现在会变成两倍大,而你的顶点着色器可以访问这两个值。 - Steven Lu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接