如何在OpenGL中提供自定义插值技术来填充三角形

Var*_*mar 2 opengl opengl-es glsl

我试图在GLSL着色器中实现自定义插值技术.

我使用flat插值说明符为我的纹理坐标关闭了默认的OpenGL双线性滤镜.我遵循以下链接中指定的技术:

如何在OpenGL中关闭默认插值

在光栅化时,图像现在获得基于图像的图像provoking vertex.

我是否可以引入插值机制来决定三角形顶点之间填充的颜色?或者这是在OpenGL中硬编码的?

我是GLSL世界的新手,因此会要求你提供一个非复杂的答案.

Nic*_*las 8

插值被硬编码到OpenGL中.如果要进行自己的插值,则必须提供片段着色器:

  1. 该特定片段的重心坐标.这可以通过传递来完成,三角形的三个顶点vec3(1, 0, 0),vec3(0, 1, 0)vec3(0, 0, 1).
  2. 您要插入的三角形数据的所有三个未插值值.这将需要flatFS中的3个输入变量(或3个输入的数组,这是相同的事情).

当然,您需要将1, 0, 0三角形与三角形顶点的特定未解释值进行匹配.其他两个指数也是如此.

这基本上需要几何着色器,因为VS很难通过重心坐标或提供正确的非插值数据.但是,通过位置的重心坐标和要插值的值,您应该能够实现您喜欢的任何插值方案.例如,#2可能包含3个以上的值.