首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用gluSphere()和gluCylinder()渲染平滑的球体和圆柱体

使用gluSphere()和gluCylinder()渲染平滑的球体和圆柱体
EN

Stack Overflow用户
提问于 2013-06-06 03:53:13
回答 1查看 2.4K关注 0票数 0

我正在使用带有C++的OpenGL (但没有着色器和GLSL),并使用glu库函数绘制球体(台球)和柱面(主杆)。我使用glBindTexture()绑定纹理,并使用SOIL library加载纹理。

正如你从截图中看到的,圆柱体和球体都有锯齿状的边缘。调用下面的glHint()如何摆脱锯齿状的边缘。gluSphere()有25个堆栈和切片,gluCylinder()有100个堆栈和切片。增加堆栈和切片不会改善图像质量。

对绘图的其余部分使用freeglut

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-06 04:37:45

首先你的问题与aliasing term有关,这是当tringles和其他一些基元(这些是创建整个场景的非常基本的对象)被光栅化(基于几何描述屏幕上的一些像素是否着色)时发生的。尝试查找“如何打开抗锯齿”-这里有许多有用的信息和一些相关的主题:http://www.glprogramming.com/red/chapter06.html。在您的例子中,很可能是GL_POLYGON_SMOOTH的glEnable和GL_BLEND。例如:

代码语言:javascript
运行
复制
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制作同样多的切片),这将导致性能损失。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16948635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档