OpenGL平滑怎么样?

时间:2013-06-24 18:45:03

标签: opengl smoothing

我需要在OpenGL中进行平滑处理。 我找到了这段代码

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glShadeModel(GL_SMOOTH); 

glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST); 
glEnable(GL_POLYGON_SMOOTH);

glDisable( GL_DEPTH_TEST ); 
glEnable( GL_ALPHA_TEST ); 

在这种情况下,平滑是有效的,但我不需要透明度。我认为这2行负责透明度:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

但如果我删除这些字符串 - 平滑不起作用。我需要留下什么来平滑?我只需要在项目中进行平滑处理,不需要混合...

1 个答案:

答案 0 :(得分:0)

嗯,平滑工作使用透明度,边缘不是有色或不是,但它们......好......透明。看看这些图片:

smoothed line unsmoothed line

如您所见,右边的线条没有平滑,它的像素要么完全不透明要么完全透明。左边的线条是平滑的,它的外部像素是透明的。

您可能需要查看在程序中强制消除锯齿功能,AA是硬件/驱动程序功能,它只管理边缘的平滑(并且根据AA的类型,其他内容)。请记住,这不是OpenGL的功能,而是硬件,驱动程序和操作系统的功能。通常,在创建OpenGL-Context时请求类似AA的东西。