OpenGL中正方形的平滑边缘

时间:2015-05-21 06:20:44

标签: opengl

http://cs.lmu.edu/~ray/notes/openglexamples/在此旋转方格示例中,您可以注意到图像中方形的边缘不平滑。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您看到的效果称为别名,可以使用抗锯齿技术解决。

可能是多个抗锯齿技术,但到目前为止最常见的是MSAA(多重采样抗锯齿){{ 3}}。 从开发人员的角度来看,MSAA既快速又简单,因为现代驱动程序提供了支持,只需要在应用程序启动时启用。但它确实会产生运行时性能成本。

答案 1 :(得分:1)

您可以在绘图前使用这些功能:

glEnable( GL_LINE_SMOOTH );
glEnable( GL_POLYGON_SMOOTH );
glHint( GL_LINE_SMOOTH_HINT, GL_NICEST );
glHint( GL_POLYGON_SMOOTH_HINT, GL_NICEST );

或者你可以在绘图之前使用它:

 Gl.glShadeModel(Gl.GL_SMOOTH);
 Gl.glEnable(Gl.GL_LINE_SMOOTH);
 Gl.glEnable(Gl.GL_BLEND);
 Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
 Gl.glHint(Gl.GL_LINE_SMOOTH_HINT, Gl.GL_DONT_CARE);

看看哪一个更适合你。

在绘制线之前曾提出过类似的问题:

How to draw smooth line with antialias