我在片段着色器中映射纹理时遇到问题。我有一个与窗口大小相同的纹理(我使用在前一次渲染中渲染的部分场景,但在下面的示例中使用砖纹理),我需要将其映射为 2D。有可能吗?我尝试了不同的方法,但没有任何效果。
你能告诉我片段着色器应该是什么样子吗?请任何建议都会有所帮助。谢谢!
我在片段着色器中映射纹理时遇到问题。我有一个与窗口大小相同的纹理(我使用在前一次渲染中渲染的部分场景,但在下面的示例中使用砖纹理),我需要将其映射为 2D。有可能吗?我尝试了不同的方法,但没有任何效果。
你能告诉我片段着色器应该是什么样子吗?请任何建议都会有所帮助。谢谢!
我有一个与窗口 (...) 大小相同的纹理,我需要将其映射为 2D。
因此,如果我对您的理解正确,那么您想使用先前生成的纹理,就好像它是某种“层”一样,其中纹理像素以 1:1 映射到视口像素,并且纹理与视口具有相同的大小?
如果是这样,那么这很容易(从 GLSL 版本 1.30 开始)。有一个函数texelFetch
,它将像素索引作为坐标(不像texture
它采用范围 [0; 1] 中的值)。内置变量gl_FragCoord
给出当前处理片段的窗口坐标。gl_FragCoord
因此,通过使用for中的坐标,texelFetch
您可以获得所需的结果。