纹理总结

目标

一般来说,支持大规模纹理的实现方案应满足如下要求:

  1. 应支持用一个任意大小纹理的一个小的子集进行全速绘制;
  2. 对纹理子集的快速更新与实时绘制可同时进行;
  3. 不能导致对场景几何构件的进一步划分或施加其它限制;
  4. 加载控制必须是健壮的,并能自动避免在过载情况下的视觉不连续现象;
  5. 纹理的表示应当与现有的应用实现无缝集成;
  6. 其增加的实现成本相对于现有硬件来说是较小的。
基本思想

对于大纹理,由于硬件的存储和贷款瓶颈的限制,直接生成 Mipmap 很不现实。于是出现了一些方法,如基于原始纹理图像分割的传统方法、Clipmap等。

分割原始纹理的方法即预先把大纹理分割成小的纹理片,每个小纹理片生成 Mipmap,然后根据视野的覆盖范围调度相关纹理片的 Mipmap图组合生成要显示的数据。

Clipmap 是在 Mipmap 基础上的改善。

Mipmaps provide a general but expensive solution when the texture image is very large. clipmaps occupy a small subset of the memory required by equivalent mipmaps, but provide much of the mipmap rendering capabilities. Clipmaps are especially useful for rendering terrain.

Clipmap 的核心思想是对整个纹理先做Mip-Map处理,然后用与纹理缓存大小有关的参数对每一级纹理进行对称裁剪,这样,尖塔形的Mip-Map就成了一个方尖塔形,顶部的尖塔就构成了Cl ip-Map的尖塔,底部的方形区域则构成了一个Clip-Map的栈。Clip-Map的尖塔常驻在纹理存储器中,而栈中的各级仅有一部分存储在存储器中,这一部分是根据视点参数和纹理坐标动态更新的对象。这是一种软硬结合实现大规模纹理实时绘制的方法,为解决这一类问题提供了良好的示范。

用 Clipmap 渲染时跟 Mipmap 非常相似,不同之处在于两点:

  1. Level-of-detail 选择算法
  2. texture memory addressing system

Clipmap 的具体介绍请阅读 Tanner 的论文: ClipMap:A Virtual MipMap

转自 http://www.linuxgraphics.cn/opengl/clipmap.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值