我要发帖 回复

中级会员

27

主题

124

积分

0

专家分

:

私信
发表时间 : 2009-5-26 16:37:40 | 浏览 : 2017    评论 : 2
如何实现对三角形的反走样
      glBegin(GL_TRIANGLES);
     谢谢!

最近VR访客

tan_dunming 评论于2009-5-26 19:57:13
有如下几种方法,具体的步骤方法不一定准确完整,仅作参考,还需要查阅相关的书籍和教程!
1.最简单的办法
//反走样处理,避免线数据出现严重锯齿
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_POINT_SMOOTH);
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
glEnable(GL_POLYGON_SMOOTH);
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
2.使用累计缓冲多次渲染(比较复杂且效率低)
具体的请参考SGI所出的《Advanced Rending》,见论坛的帖子
http://www.52vr.com/bbs/viewthread.php?tid=5619&highlight=Advanced

见 accumaa.c (不要问我这个文件在哪里,在帖子的附件里有)

3.显卡属性设置
某些显卡支持全屏抗锯齿属性(如NVIDIA QUADRO FX3000),不过开启抗锯齿设置后对性能影像也比较大,慎用!

[ 本帖最后由 tan_dunming 于 2009-5-26 08:00 PM 编辑 ]
追求卓越
yaojianfu 评论于2009-6-7 22:21:54
我想实现在绘制3ds的时候将锯齿去掉,但是我采用了上述方法后,锯齿依旧存在,如图1,不知道是不是还有要注意的地方?
    我是通过绘制一个个三角形来实现整个模型的绘制.代码如下:
               for (i=0; i <numfaces/3; i++)   //三角形的个数
        {
                         .......
                         ::glNormal3f( nx, ny, nz);
                        glBegin(GL_TRIANGLES);//绘制一个面(三角形)
             glVertex3fv(pointarray[faces2[0]]);
                  glVertex3fv(pointarray[faces2[1]]);
                  glVertex3fv(pointarray[faces2[2]]);
        glEnd();
                      }
         请指教!
         谢谢!

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-3-7 01:25 PM

返回顶部