我一直在调查和试用OpenGL上的不同AA技术,包括桌面和ES配置文件(以及2.0及以上版本),用于将2D内容渲染到屏幕外的FBO。
到目前为止,我已经尝试过FSAA,FXAA,MSAA以及使用GL_LINE_SMOOTH功能。
由于API的限制,我无法为ES配置文件找到足够的AA解决方案,因为我只限于FSAA和FXAA。例如,glTexImage2DMultisample(MSAA需要)和GL_LINE_SMOOTH功能不可用。
FXAA很聪明,但模糊了文字字形,弊大于利,它只适用于3D场景。
FSAA在2倍超级采样时给出了非常好的效果,但是在我们的大多数硬件上使用了太多额外的视频内存。
我在问其他人是否在类似情况下对其他任何技术都有好运 - 例如:使用OpenGL ES配置文件将消除锯齿的2D内容渲染到离屏FBO。
请注意:我知道在通过ES profule上的GL_MULTISAMPLE设置窗口时,我可以要求对默认帧缓冲区进行多次采样,但这对于渲染到必须实现AA的离屏FBO是不利的自己。
如果我上述任何陈述不正确,请跳入&直截了当地说,这可能有所帮助!
谢谢。
答案 0 :(得分:1)
例如glTexImage2DMultisample(MSAA需要)
为什么需要它?要在“规范内”渲染到多样本存储缓冲区,然后使用glBlitFramebuffer将其解析为单个采样表面。
如果您不介意扩展,那么许多供应商实现这种扩展,其行为类似于EGL窗口表面,具有隐式解析,这比上述更有效,因为它避免了基于磁贴的硬件上的内存往返架构。
https://www.khronos.org/registry/gles/extensions/EXT/EXT_multisampled_render_to_texture.txt
和GL_LINE_SMOOTH功能不可用。
你有一个引人注目的用例线吗?如果你确实需要它们,那么只需对它们进行三角测量,但对于3D内容,MSAA真的有助于线条真的不常用。