0

我使用 OpenGL 和 C++(但没有着色器和 GLSL)并使用 glu 库函数绘制球体(台球)和圆柱体(球杆)来绘制它们。我glBindTexture()用来绑定纹理并使用SOIL 库加载纹理。

正如您从屏幕截图中看到的那样,圆柱体和球体的边缘都是锯齿状的。调用以下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

截屏

4

1 回答 1

3

首先,您的问题与混叠术语有关,这就是当三角形和其他一些基元(这些是创建整个场景的非常基本的对象)被光栅化时会发生的情况(基于几何描述,屏幕上的某些像素是否着色) . 尝试寻找“如何打开抗锯齿” - 这里有很多关于这个和一些相关主题的有用信息:http ://www.glprogramming.com/red/chapter06.html 。在您的情况下,GL_POLYGON_SMOOTH 和 GL_BLEND 肯定是 glEnable 。例如。

glEnable (GL_POLYGON_SMOOTH);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glHint (GL_POLYGON_SMOOTH_HINT, GL_DONT_CARE);

如果您打算使用线条,则会有 GL_LINE_SMOOTH 和 GL_LINE_SMOOTH_HINT。

对于未来的项目,如果它们远离观察者(为球体制作尽可能多的切片),尽量不要使用如此复杂的模型,这将导致性能损失。

于 2013-06-05T20:37:45.320 回答