我正在使用带有C++的OpenGL (但没有着色器和GLSL),并使用glu库函数绘制球体(台球)和柱面(主杆)。我使用glBindTexture()
绑定纹理,并使用SOIL library加载纹理。
正如你从截图中看到的,圆柱体和球体都有锯齿状的边缘。调用下面的glHint()
如何摆脱锯齿状的边缘。gluSphere()
有25个堆栈和切片,gluCylinder()
有100个堆栈和切片。增加堆栈和切片不会改善图像质量。
对绘图的其余部分使用freeglut
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); //Smooth polygons
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //Best perspective corrections
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); //Smooth points
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); //Smooth lines
发布于 2013-06-06 04:37:45
首先你的问题与aliasing term有关,这是当tringles和其他一些基元(这些是创建整个场景的非常基本的对象)被光栅化(基于几何描述屏幕上的一些像素是否着色)时发生的。尝试查找“如何打开抗锯齿”-这里有许多有用的信息和一些相关的主题:http://www.glprogramming.com/red/chapter06.html。在您的例子中,很可能是GL_POLYGON_SMOOTH的glEnable和GL_BLEND。例如:
glEnable (GL_POLYGON_SMOOTH);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glHint (GL_POLYGON_SMOOTH_HINT, GL_DONT_CARE);
如果您计划使用lines,则可以使用GL_LINE_SMOOTH和GL_LINE_SMOOTH_HINT。
对于未来的项目,如果离查看器很远,尽量不要使用如此复杂的模型(为sphere制作同样多的切片),这将导致性能损失。
https://stackoverflow.com/questions/16948635
复制相似问题