Dae*_*all 14 opengl glsl fragment-shader
好吧,在我的GLSL片段着色器中,我希望能够计算片段与空间中特定行的距离.
结果是我首先尝试在顶点着色器中使用不同的vec2集来镜像最终的内容gl_FragCoord:
varying vec2 fake_frag_coord;
//in vertex shader:
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
fake_frag_coord=(gl_ModelViewProjectionMatrix * gl_Vertex).xy;
Run Code Online (Sandbox Code Playgroud)
现在在片段着色器中我期望:
gl_FragCoord.xy==fake_frag_coord
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.管道做了什么操作gl_Position把它变成gl_FragCoord了我忽略的事情fake_frag_coord?
Jay*_*nek 11
gl_FragCoord是屏幕坐标,因此您需要获得有关屏幕大小的信息,以便根据位置生成屏幕大小.你生成的fake_frag_coord将对应于我认为的标准化设备坐标(-1到1)中屏幕上的一个点.因此,如果您要在特定维度上乘以屏幕大小的一半,然后添加该大小,您将获得实际的屏幕像素.