作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,在我的 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;
现在在片段着色器中我期望:
gl_FragCoord.xy==fake_frag_coord
但事实并非如此。管道对 gl_Position
执行什么操作,将其转换为我在 fake_frag_coord
上忽略的 gl_FragCoord
?
最佳答案
gl_FragCoord 是屏幕坐标,因此您需要有关屏幕尺寸等信息才能根据位置生成它。我认为您生成的 fake_frag_coord 将对应于屏幕上标准化设备坐标中的一个点(-1 到 1)。因此,如果您将特定尺寸的屏幕尺寸乘以一半,然后添加该尺寸,您将获得实际的屏幕像素。
关于opengl - 如何在glsl中计算gl_FragCoord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1288174/
我是一名优秀的程序员,十分优秀!