如何获得硬边 - OpenGL

时间:2012-12-15 23:39:58

标签: opengl glsl edges

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

没有硬边的当前毛边: http://twirlbound.com/uploads/terain.png

2 个答案:

答案 0 :(得分:4)

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

flat out vec3 v_normal;

在片段着色器中,类似这样:

flat in vec3 v_normal;

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

答案 1 :(得分:0)

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

您还需要在绘图例程之前设置以下内容以获得平面着色。

glEnable(GL_FLAT);
glShadeModel(GL_FLAT);

您可以使用

将阴影设置为平滑
glEnable(GL_SMOOTH);
glShadeModel(GL_SMOOTH);