2

我怎样才能在我的地形上获得坚硬的边缘。我在 GLSL 中有一个简单的环境和漫反射着色器。我认为片段着色器正在插入顶点法线并导致平滑着色。你们需要我的代码还是我可以启用一些设置?

当前没有硬边的地形:http: //twirlbound.com/uploads/terin.png

4

2 回答 2

4

在您的顶点着色器中,执行以下操作:

flat out vec3 v_normal;

在您的片段着色器中,如下所示:

flat in vec3 v_normal;

flat告诉 GL 为三角形栅格化的所有片段赋予相同的值。使用哪个顶点的法线取决于当前的“激发顶点”,通过调用设置glProvokingVertex

于 2012-12-16T00:17:45.383 回答
0

要获得您要求的硬边,您需要指定垂直于三角形方向的每个三角形法线。为此,您需要将它们作为三角形发送,与四边形或类似的相对。

您还应该在绘图程序之前设置以下内容以获得平坦的阴影。

glEnable(GL_FLAT);
glShadeModel(GL_FLAT);

您可以在使用后将阴影设置为平滑

glEnable(GL_SMOOTH);
glShadeModel(GL_SMOOTH);
于 2012-12-15T23:47:21.283 回答