概念
在纹理倾斜的时候如何设置边缘模糊,否则图像看起来会很怪异,对眼睛不适合,这个技术其实ffmpeg做得非常好,在合适的参属下,ffmpeg缩小会把这些做好。
各项异性过滤
Anisotropic Filtering 图像缩小时产生闪烁,摩尔纹,锯齿,要消除这些,必须做到精确的图像过滤,同时也是非常消耗显卡的能力,需要查询能力,老的显卡上不一定会做得很好。
opengl设置
glGenTextures(1, &texture_id)); glBindTexture(GL_TEXTURE_2D, texture_id); //Create a 2D texture with Mipmap //下面这个函数时老版本的 3.1 版本之前 gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, m_width, m_height, GL_RGB, GL_UNSIGNED_BYTE, image_data);
使用新版本的使用如下函数 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE,ptr); glGenerateMipmap(GL_TEXTURE_2D); 注意: 这个顺序不能变,只有先产生原始纹理,才能产生mipmap,否则会出错
//显卡 Opengl 实现支持的最大各异向程度. //获取 最大largest_supported_anisotropic; glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropic); //纹理缩小时採用的过滤方法:三线性过滤 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); //纹理放大时採用的过滤方法,这里设置的是线性过滤 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //用显卡支持的最大各异向程度设置最大各异向程度參数 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropic);
|