【发布时间】:2020-02-19 08:01:48
【问题描述】:
我正在尝试制作一个程序来处理片段着色器(主要是 raymarching),类似于 shadertoy 和 glslsandbox 等网站所做的,但我不知道如何设置它。
我已经建立了一个 c++ sfml 项目,我已经对这个问题进行了一些谷歌搜索,但没有找到明确的解释。有些人似乎建议绘制一个填充屏幕的矩形,然后在其上设置纹理并使用它,但这真的是最好的方法吗?
【问题讨论】:
-
“绘制一个填充屏幕的矩形” - 执行片段着色器,您必须绘制几何图形。片段着色器针对被网格图元覆盖的片段执行。究竟是什么问题?
-
@Rabbid76 我想我要问的是绘制该矩形的最佳方法是什么?我是否手动绘制顶点?我是否使用“sf::RectangleShape”?我需要给它一个纹理吗?
-
“我需要给它一个纹理吗” 如果片段着色器“绘制”了一些东西,那么你根本不需要纹理。仅当您想要显示纹理本身或想要创建纹理过滤器时才需要纹理。
-
您可能应该查找
sf::Shader的文档以了解您需要什么,它应该在那里记录。 -
这就像对图片进行后期处理,我猜。您绘制一个填充屏幕的矩形。我在顶点着色器中硬编码了 4 个顶点和 tex 坐标,并使用 gl_VertexID 访问它们。然后,您需要为片段着色器提供一些输入,这些输入通常来自某些纹理。