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

    文章

    229

    浏览量

    26623
  • 渲染
    +关注

    关注

    0

    文章

    69

    浏览量

    10900

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

    什么是追踪缓存/转接卡?  追踪缓存  在奔腾IV一级缓存,一般一级缓存的指令
    发表于 02-04 10:40 457次阅读

    内容中心网络基于缓存索引的缓存路由机制

    内容中心网络基于缓存索引的缓存路由机制_王好齐
    发表于 01-07 20:49 0次下载

    Mybatis缓存之一级缓存

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

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

    前端缓存主要是分为HTTP缓存和浏览器缓存。其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务器代码上设置;而浏览器
    发表于 09-13 04:17 9395次阅读
    什么是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>

    浅谈架构设计缓存技术

    缓存在架构设计占有重要地位。缓存在提升性能也扮演重要的角色。常见的有对资源的缓存,比如数据库连接池、http连接池,还有对数据的
    的头像 发表于 01-01 10:18 2610次阅读
    浅谈架构设计<b class='flag-5'>中</b>的<b class='flag-5'>缓存</b>技术

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

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

    CPU缓存的作用及原理有哪些

    实际数据读取重要的是一级缓存,因为一级缓存速度最快,二级缓存其次,三级缓存最慢,只是三级缓存
    的头像 发表于 08-27 15:58 1.1w次阅读

    如何在SpringBoot解决Redis的缓存穿透等问题

    今天给大家介绍一下如何在SpringBoot解决Redis的缓存穿透、缓存击穿、缓存雪崩的问题。
    的头像 发表于 04-28 11:35 694次阅读

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

    本地缓存 :应用缓存组件,缓存组件和应用在同一进程缓存的读写非常快,没有网络开销。但各应
    发表于 06-11 15:12 785次阅读
    聊聊本地<b class='flag-5'>缓存</b>和分布式<b class='flag-5'>缓存</b>

    如何使用缓存

    缓存技术被认为是减轻服务器负载、降低网络拥塞、增强Web可扩展性的有效途径之一,其基本思想是利用客户访问的时间局部性(Temproral Locality)原理, 将客户访问过的内容在Cache
    的头像 发表于 10-08 14:07 565次阅读

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

    SqlSession的生命周期中,当SqlSession关闭时,一级缓存也会被清空。 1.2 缓存实现机制 一级缓存采用了基于PerpetualCache的HashMap来实现,使用一个Map对象来保存
    的头像 发表于 12-03 11:55 1020次阅读

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

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