OpenGL如何平滑?

OpenGL如何平滑?,opengl,smoothing,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_

我需要在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 ); 
在这种情况下,平滑是可行的,但我不需要透明度。我认为这两行对透明度负责:

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

但是如果我删除这个字符串-平滑不起作用。我需要留下什么来平滑?在我的项目中,我只需要平滑,不需要混合…

好吧,平滑使用透明度,边不是彩色的,也不是彩色的,但它们是。。。好。。。透明的。请看这些图片:

正如你所看到的,右边的线条不是平滑的,它的像素要么是完全不透明的,要么是完全透明的。左边的线是平滑的,它的外部像素是透明的


您可以在程序中强制执行抗锯齿,AA是一种硬件/驱动程序功能,它只管理边缘的平滑(以及,根据AA的类型,其他功能)。请记住,这不是OpenGL的特性,而是硬件、驱动程序和操作系统的特性。通常,在创建OpenGL上下文时,您会请求类似AA的内容。

您可能不想使用平滑。它从来没有带来好的结果,而且它的支持是可选的。只需使用全屏多样本抗锯齿(FSAA、MSAA)。更容易使用,效果更好。