hoj*_*ram 8 c++ opengl antialiasing
我刚开始使用OpenGL编程,我正在构建一个时钟应用程序.我希望它看起来像这样简单:http://i.stack.imgur.com/E73ap.jpg
但是,我的应用程序看起来非常"反锯齿":http://i.stack.imgur.com/LUx2v.png
我尝试了红皮书中提到的GL_SMOOTH_POLYGON方法.然而,这似乎没有做任何事情.
我正在使用带有Intel集成显卡的笔记本电脑.该卡不支持 GL_ARB_multisample等内容.
到目前为止,我的应用程序看起来有什么选择可以消除锯齿?
Ste*_*nov 29
英特尔集成的视频卡因缺乏对OpenGL抗锯齿的支持而臭名昭着.但是,你可以解决这个问题.
第一个选项:手动超级采样
使纹理的大小是屏幕的2倍.通过FBO将场景渲染到纹理,然后渲染半个大小的纹理,使其填充屏幕,使用双线性插值.由于要绘制的像素增加4倍,因此可能非常慢(在复杂场景中).
将导致弱抗锯齿(因此我不推荐它用于桌面软件,如你的时钟).你自己看:

第二个选项:(高级)
使用着色器执行形态抗锯齿.这是一项新技术,我不知道实施起来有多容易.它被一些高级游戏使用.
第三种选择:
通过纹理模拟OpenGL的基元,使用纹理和双线性插值来获得优势.这里描述了该技术.
第四个选项: 为时钟的每个元素使用单独的纹理.
例如,对于您的小时箭头,请勿使用形状像箭头的扁平黑色GL_POLYGON.而是使用旋转的GL_QUAD,使用在图像程序中绘制的小时箭头图像进行纹理处理.然后双线性插值将在旋转时对其进行抗锯齿处理.
这个选项花费最少,看起来非常好.
第五种选择:
使用支持软件渲染的库-
这些库包含自己的抗锯齿渲染算法,因此它们不依赖于您的视频抗锯齿.优点是:
缺点是性能要差得多,但这对于时钟应用程序来说根本不重要,当你考虑我提到的智能重绘功能时,它会转过来.
对于像时钟应用程序这样的东西,非常推荐第五种选择.OpenGL主要用于游戏,3D软件和音乐可视化等强大的图形内容.对于桌面应用程序,它太低级别,实现差异太大.