片段着色器中的glLight(屏幕位置)

时间:2012-07-17 15:01:52

标签: glsl fragment

我想创建一个片段着色器,在glLightSource的位置呈现一个白色圆圈。但不知何故,我很难搞清楚如何在屏幕坐标中转换glLight位置......

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

你必须将gl_LightSource.positiongl_ModelViewProjectionMatrix相乘得到屏幕坐标(对于OpenGL 2.x-使用OGL 3.x +你当然必须为你的矩阵使用一个制服)。但是,问题是您仍然需要在全屏四边形中找到正确的像素 - 也就是说,您必须为每个片段计算这个像素,然后测试当前片段位置是否与灯光的屏幕空间位置相同。

因此,我强烈建议使用一个带有光线坐标的顶点,并按照Christian Rau的建议绘制它。