虽然您可以在高端GLSL中执行此操作,但实现实体着色的正确方法是为每个三角形创建唯一的顶点.这是一个微不足道的循环.对于每个顶点,计算共享多少个三角形.这就是你经常复制它的频率.确保你的循环是O(n).然后将每个顶点颜色或法线设置为三角形的颜色或法线.再一次直接循环.不要费心优化共享颜色,这是不值得的.
稍后编辑,因为这是一个流行的答案:
要按平面着色进行平坦,可以在世界或视图空间中插入顶点位置.然后在片段着色器中计算此变量的ddx(dFdx)和ddy(dFdy).取这两个向量的交叉积并将其标准化 - 你得到平坦的正常!根本不需要网格更改或每个顶点数据.