我正在尝试在GLSL着色器中实现自定义插值技术。
我已使用flat
插值说明符为我的纹理坐标关闭了默认的OpenGL双线性滤镜。我遵循以下链接中指定的技术:
How to switch off default interpolation in OpenGL
在栅格化时,图像现在获得基于provoking vertex
的图像。
我是否可以引入插值机制来决定三角形顶点之间填充的颜色?或者这是在OpenGL中硬编码的吗?
我是GLSL世界的新手,因此会要求您向我提供一个非复杂的答案。
答案 0 :(得分:8)
插值被硬编码到OpenGL中。如果要进行自己的插值,则必须提供片段着色器:
vec3(1, 0, 0)
,vec3(0, 1, 0)
和vec3(0, 0, 1)
来完成。flat
输入变量(或3个输入的数组,这是相同的事情)。当然,您需要将1, 0, 0
三角形与三角形顶点的特定未解释值进行匹配。其他两个指数也是如此。
这基本上需要几何着色器,因为VS很难通过重心坐标或提供正确的非插值数据。但是,通过位置的重心坐标和要插值的值,您应该能够实现您喜欢的任何插值方案。例如,#2可能包含3个以上的值。
答案 1 :(得分:0)
需要自定义插值功能的常用方法是对纹理坐标使用标准插值,并在纹理中查找所需的任何数据。