我有一个由几个三角形组成的网格(订单100)。我想为每个人定义一个不同的片段着色器。因此,能够为每个三角形显示不同类型的反射行为。
我该如何处理这个问题?我应该开始定义GLSL程序并尝试区分不同的三角形吗?这个答案告诉我这不是正确的方法glDrawElements and flat shading。即使这个Using a different vertex and fragment shader for each object in webgl似乎也不是正确的方法,因为我不想拥有多个对象,只有一个具有不同材质(片段着色器)的对象。
答案 0 :(得分:1)
我的建议是创建一个超级着色器,它可以处理您想要的所有不同场景。
为了设置它,你需要一些属性来决定使用着色器的哪一部分。
e.g。在您的顶点或片段着色器中:
attribute bool flatShading;
attribute bool phongShading;
if (flatShading) {
// perform flat shading
} else if (phongShading) {
// perform phong shading
}
然后设置缓冲区,使每个三角形中的顶点都应用了某个着色属性。