0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

渲染中的帧缓存和深度缓存

Dbwd_Imgtec 来源:未知 作者:胡薇 2018-05-14 11:44 次阅读

渲染涉及大量的缓存,这里缓存只是一个简单的存有像素数据的矩形内存块,最重要缓存是帧缓存和深度缓存。

帧缓存存储每个像素的色彩,即渲染后的图像。色彩可能有多种格式,但就当前的讨论来说,不考虑格式的差异。帧缓存常常在显存中,显卡不断读取该内存,并将二进制数据转化为CRT接收的合适信号。所谓双缓存技术,是为了防止图像在未完全渲染好之前就被显示。此时实际上使用了两个帧缓存,一个缓存存放当前显示的图像,另一个离线缓存存放正在渲染的图像。

一旦渲染完成并准备好显示即切换缓存,有两种方式:

(1)如使用页切换技术,则命令显示卡开始从离线缓存读取数据,接着对调两个缓存的角色,现在的显示缓存变为离线缓存。

(2)也可以将离线缓存复制到显示缓存。

下图显示了双缓存的情况:

另一个用于渲染的重要缓存是深度缓存----也称作z-buffer。深度缓存不存储像素的颜色,而代之以像素的深度信息。存入缓存的深度信息有多种不同的变体,但它们基本上都反映物体到摄像机的距离。实践中通常保存的都是裁剪空间的z坐标,这就是z-buffer名称的由来。

深度缓存一般用于计算物体之间的遮挡,当光栅化三角形时,计算各像素的插值深度。在渲染像素之前,将这个深度值和深度缓存中该像素的深度值比较,如果新的深度比现有值离摄像机更远,则新的像素被丢弃;否则像素颜色被写到帧缓存,并用新的更近的值更新深度缓存。在开始进行新的渲染之前,记得要置z-buffer各值为无限远(在裁剪空间中,这个值为1.0),这样第一批像素才能通过深度测试,一般不对z-buffer设置双缓存。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓存
    +关注

    关注

    1

    文章

    220

    浏览量

    26437
  • 渲染
    +关注

    关注

    0

    文章

    60

    浏览量

    10752

原文标题:渲染中最重要的两个缓存:帧缓存和深度缓存

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CPU一级缓存与二级缓存深度分析

    CPU缓存:通过优化的的读取机制,可以使CPU读取缓存的命中率非常高,也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。
    的头像 发表于 04-16 10:52 1.9w次阅读
    CPU一级<b class='flag-5'>缓存</b>与二级<b class='flag-5'>缓存</b><b class='flag-5'>深度</b>分析

    157.157、缓存 缓存使用 本地锁在分布式下的问题

    缓存
    充八万
    发布于 :2023年07月18日 04:44:59

    谈谈深度无盘缓存工具设置技巧

    。经过本人这段时间一直在实际环境测试深度无盘服务端自带的IO读缓存深度无盘缓存工具,发现这两个缓存
    发表于 07-15 13:24

    视频相邻相减,怎么解决图片缓存问题

    如题,用摄像头实时采集视频,想让相邻相减,或者隔几相减,怎么解决图片缓存问题?附上视频图像累减程序。万望高手答疑解惑,不胜感激!
    发表于 04-21 11:24

    在Touchgfx缓存位图时是否使用DMA进行缓存呢?

    在Touchgfx缓存位图时是否使用DMA进行缓存
    发表于 12-26 07:15

    什么是追踪缓存/转接卡?

    什么是追踪缓存/转接卡?  追踪缓存  在奔腾IV一级缓存中,一般一级缓存中的指令缓存都是即时解码:而追踪
    发表于 02-04 10:40 428次阅读

    什么是CPU一级缓存/二级缓存

    什么是CPU一级缓存/二级缓存?  即L1 Cache。集成在CPU内部中,用于CPU在处理数据过程中数据的暂时保存。由于缓存指令和数据与CPU
    发表于 02-04 10:43 1025次阅读

    Mybatis缓存之一级缓存

    本文主要讲mybatis的一级缓存,一级缓存是SqlSession级别的缓存。mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级
    发表于 11-27 20:44 1079次阅读
    Mybatis<b class='flag-5'>缓存</b>之一级<b class='flag-5'>缓存</b>

    什么是Web缓存,HTTP缓存和浏览器缓存的区别

    前端缓存主要是分为HTTP缓存和浏览器缓存。其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务器代码上设置;而浏览器
    发表于 09-13 04:17 9171次阅读
    什么是Web<b class='flag-5'>缓存</b>,HTTP<b class='flag-5'>缓存</b>和浏览器<b class='flag-5'>缓存</b>的区别

    缓存是什么 为什么需要缓存

    缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景。
    的头像 发表于 09-28 02:48 1.1w次阅读
    <b class='flag-5'>缓存</b>是什么 为什么需要<b class='flag-5'>缓存</b>

    缓存的基本原理 缓存的分类

    缓存的主要手段有:浏览器缓存、CDN、反向代理、本地缓存、分布式缓存、数据库缓存
    发表于 06-13 12:04 4360次阅读

    如何设计一个缓存系统?

    设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于
    的头像 发表于 02-08 11:40 2662次阅读

    聊聊本地缓存和分布式缓存

    本地缓存 :应用中的缓存组件,缓存组件和应用在同一进程中,缓存的读写非常快,没有网络开销。但各应用或集群的各节点都需要维护自己的单独缓存,无
    发表于 06-11 15:12 581次阅读
    聊聊本地<b class='flag-5'>缓存</b>和分布式<b class='flag-5'>缓存</b>

    mybatis一级缓存和二级缓存的原理

    MyBatis是一种轻量级的持久化框架,它提供了一级缓存和二级缓存的机制来优化数据库操作性能。一级缓存是默认开启的,而二级缓存需要手动配置启用。 一、一级
    的头像 发表于 12-03 11:55 516次阅读

    Redis缓存预热+缓存雪崩+缓存击穿+缓存穿透要点简析

    缓存预热就是系统上线后,提前将相关的缓存数据直接加载到缓存系统。
    的头像 发表于 12-25 09:41 299次阅读
    Redis<b class='flag-5'>缓存</b>预热+<b class='flag-5'>缓存</b>雪崩+<b class='flag-5'>缓存</b>击穿+<b class='flag-5'>缓存</b>穿透要点简析