Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1324901
  • 博文数量: 281
  • 博客积分: 8800
  • 博客等级: 中将
  • 技术积分: 3345
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-17 22:31
文章分类

全部博文(281)

文章存档

2013年(1)

2012年(18)

2011年(16)

2010年(44)

2009年(86)

2008年(41)

2007年(10)

2006年(65)

我的朋友

分类: LINUX

2008-09-24 17:48:50

由离散点组成的数字图像,与真实景物之间存在一定误差。表现为线条呈现锯齿状、图形细节失真等等,就叫做走样。

Antialiasing反走样就是将原相邻阶梯之间的像素颜色设置为过渡色,使变化柔和,物体就显得平滑了。

glEnable( GL_POINT_SMOOTH );
glEnable( GL_LINE_SMOOTH );
glEnable( GL_POLYGON_SMOOTH );
// 启用反走样

可以调用glHint()函数对图像质量和绘制速度之间的进行权衡。
glHint( GLenum target , GLenum hint );

参数target:

GL_POINT_SMOOTH_HINT
GL_LINE_SMOOTH_HINT
GL_POLYGON_SMOOTH_HINT
指定点、线、多边形的采样质量

GL_FOG_HINT
指出雾的计算的精度

GL_PERSPECTIVE_CORRECTION_HINT
指定颜色和纹理坐标插值的质量

参数hint:

GL_FASTEST
最快速度

GL_NICEST
最高质量

GL_DONT_CARE
不进行选择

示例

当按下 Escape 键时 主程序退出
当按下 Enter 键时 开始/停止移动
当双击窗体时 改变窗体状态

程序截图

源码下载

CSharp_OpenGL_Antialiasing.rar 74KB

这里还有一个反走样直线的示例:反锯齿直线
绿色线条使用了线条平滑(反锯齿)
白色线条没有使用 在旋转中可以明显的看到锯齿
当然质量与性能是成反比的 况且我们有时候还需要锯齿效果
按回车键 开始/停止旋转

Screenshot

关键代码

public override void glDraw()
        {    
... ...
            
            GL.glDisable( GL.GL_LINE_SMOOTH ); // 禁用 线条平滑
            GL.glColor3f( 1.0f , 1.0f , 1.0f ); // 白色
            GL.glBegin( GL.GL_LINES ); // 开始绘制线条

                GL.glVertex2f( -0.3f ,  1.8f ); // 两点确定一条直线 ( 汗  )
                GL.glVertex2f( -0.3f , -1.8f );

            GL.glEnd (); // 绘制结束

            // #####################################################

            GL.glEnable( GL.GL_LINE_SMOOTH ); // 启用 线条平滑 即 反锯齿线条
            GL.glColor3f( 0.0f , 1.0f , 0.0f ); // 绿色
            GL.glBegin( GL.GL_LINES ); // 开始绘制线条

            GL.glVertex2f( 0.3f ,  1.8f );
            GL.glVertex2f( 0.3f , -1.8f );

            GL.glEnd (); // 绘制结束    
        }
阅读(3912) | 评论(1) | 转发(0) |
0

上一篇:OpenGL ES 1.x 2.x 概述

下一篇:vbo pbo fbo

给主人留下些什么吧!~~

chinaunix网友2008-11-09 20:14:51

好,顶