为网格中的每个三角形写入片段着色器的方法

时间:2015-02-27 16:06:37

标签: opengl-es webgl fragment-shader

我有一个由几个三角形组成的网格(订单100)。我想为每个人定义一个不同的片段着色器。因此,能够为每个三角形显示不同类型的反射行为。

我该如何处理这个问题?我应该开始定义GLSL程序并尝试区分不同的三角形吗?这个答案告诉我这不是正确的方法glDrawElements and flat shading。即使这个Using a different vertex and fragment shader for each object in webgl似乎也不是正确的方法,因为我不想拥有多个对象,只有一个具有不同材质(片段着色器)的对象。

1 个答案:

答案 0 :(得分:1)

我的建议是创建一个超级着色器,它可以处理您想要的所有不同场景。

为了设置它,你需要一些属性来决定使用着色器的哪一部分。

e.g。在您的顶点或片段着色器中:

attribute bool flatShading;
attribute bool phongShading;
if (flatShading) {
  // perform flat shading
} else if (phongShading) {
  // perform phong shading
}

然后设置缓冲区,使每个三角形中的顶点都应用了某个着色属性。