美文网首页
OpenGL7.1Mip贴图

OpenGL7.1Mip贴图

作者: 数字d | 来源:发表于2019-07-16 14:41 被阅读0次

1.Mip贴图-多级渐远纹理

mip贴图是一种功能强大的纹理技巧,它可以提高渲染性能的同时可以改善场景的显示质量。
举例来说:一个场景内有远的物体和近的物体,远处物体的纹理会和近处物体纹理有相同的分辨率。由于远处物体只能产生很少片段,OpenGL从高分辨率纹理中为这些片段获取正确的纹理值就很困难,这里会产生两个问题:
1.从大跨度的纹理片段拾取一个纹理颜色值,会感觉不真实(闪烁问题)
2.对一个小的片段使用高分辨率纹理显得浪费内存。

如图下图所示


zzz1.png

由于距离比较远,解析度不会太受到关注。

openGL有一个glGenerateMipmaps函数来完成多级渐远纹理操作。
场景:如果以缩小的方式来填充纹理,就可以使用Mip贴图

2.各向异性过滤

当一个纹理贴图被过滤的时候,OpenGL使用纹理坐标来判断一个特定的几何片段将落在纹理的具体位置。然后,紧邻这个位置的纹理单元使用GL_NEAREST 和 GL_LINEAR过滤操作进行采样。
当视角正视场景时候,会出现模糊的状态,正视在这里的官方用语叫做“正向同性过滤”,而在一般情况下,都是采用各项异性过滤。
各向异性过滤步骤:
第一:查询得到支持的各向异性过滤的最大数量,可以受用glGetFloatv函数,并以GL_MAX_TEXTURE_MAX_ANTISOTROPY_EXT参数。
第二:我们可以使用glTExParameter函数以及GL_TEXTURE_MAX_ANISOTROPY_EXT,设置各项异性过滤数据。
openGL里面纹理设置参数都是以glTexParameterf开头


//设置纹理参数(各项异性采样)
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAX_ANISOTROPY_EXT,flargest);
//设置各向同性过滤,数量为1.0表示(各向同性采样)
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAX_ANISTROPY_EXT,1.0f);

各向异性过滤的数量越大,沿着最大变化方向(沿着最强观察点)所采样的纹理单元就越多。值1.0表示纹理过滤(各向同性过滤)。

各向异性过滤会增加额外的工作,包括其他纹理单元。很可能对性能早何从赢下那个。但是,现代硬件上,应用这个特性对速度造成影响不大。

更重要的是,目前他已经成为流行游戏、动画和模拟程序的一个标准特性。

􏰤􏰇􏰍􏰎􏰏􏰐隧道和球体世界效果配图


zzz1.png

相关文章

网友评论

      本文标题:OpenGL7.1Mip贴图

      本文链接:https://www.haomeiwen.com/subject/vwmdkctx.html