在D3D11中,有depth/stencil buffer,它们和framebuffer相对应,如下图所示,framebuffer中一个像素,有相对应的depth buffer和stencil buffer值: D3D11中,depth buffer和stencil buffer一起定义,比如DXGI_FORMAT_D24_UNORM_S8_UINT,是指用一个无符号24位的值做为像素的深度缓冲值,并把它映射到[0,1],用一个8位的值表示像素stencil值,并把它映射到[0,255].注意:…
原文:Directx11教程(48) depth/stencil buffer的作用      在D3D11中,有depth/stencil buffer,它们和framebuffer相对应,如下图所示,framebuffer中一个像素,有相对应的depth buffer和stencil buffer值:         D3D11中,depth buffer和stencil buffer一起定义,比如DXGI_FORMAT_D24_UNORM_S8_UINT,是指用一个无符号24位的值做为像素…
我们现在需要创建深度/模板缓冲区. 如§4.1.5所述,深度缓冲区只是一个2D纹理,用于存储最近的可见对象的深度信息(如果使用模板(stencil),则也会存储模板信息). 纹理是一种GPU资源,因此我们通过填写描述纹理资源的D3D12_RESOURCE_DESC结构,然后调用ID3D12Device :: CreateCommittedResource方法来创建一个. D3D12_RESOURCE_DESC结构定义如下: typedef struct D3D12_RESOURCE_DESC {…
原文:Directx11教程(50) 输出depth/stencil buffer的内容      有时候,我们需要查看depth/stencil buffer的内容,比如上一章中,我们要查看stencil buffer,看看我们设置的stencil值是否起作用,这时就要输出depth/stencil buffer内容,但这些内容在gpu中,我们并不能直接查看,需要通过纹理copy,资源映射的方式,拷贝到system memory中才可以直接查看.      下面是输出depth/stencil…
这是一道在<Introduction to 3D Game Programming with DirectX 11>上的练习题. 要求把某个像素点上的Depth Complexity(深度复杂度?)可视化输出.Depth Complexity即某个点上有多少次depth test. 根据题目中的提示,我们可以用stencil buffer完成. 简要步骤如下: 绘制场景,设置DepthStencilState为stencil test永远通过,通过后stencil buffer中的值+1.这样…
在windows API搭建的OpenGL窗口中使用模板缓冲,需要在像素格式描述表中设置stencil buffer位宽为8,这样窗口会自动生成stencil buffer,然后可以在opengl环境下使用模板缓冲了. 一个渲染物体轮廓的示例,绿色为小长方体的边框 void Display() { glEnable(GL_DEPTH_TEST); glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); glClear(GL_COLOR_BUFFER_BIT | GL…
http://blog.csdn.net/u011047171/article/details/46928463 Stencil Buffer&Stencil Test 在开始前先吐槽下unity的官方文档,说实话关于stencil ,官方文档真的是可以不要了,除了记流水账般解释了下各个参数的作用,作为例子的shader也是让人一头雾水,整个文档看下来,你发觉stencil是用来干嘛的,怎么操作,仍然不知道.好在unity的shaderlab 和D3D,OpenGL等shader语言是一致的,还…
http://www.cppblog.com/lovedday/archive/2008/03/25/45334.html http://www.cppblog.com/lovedday/ D3D中的模板缓存(3) 8.3实例程序:平面阴影 在场景中被灯光照射的地方会产生阴影,这将使场景变的更真实.在这一部分我们将演示怎样实现平面阴影,即在平面上的阴影(如图8.5). 使用这种阴影只是一种权宜之计,虽然它增强了场景的真实效果,但是这并不是现实中的阴影. 为了实现平面阴影,我们首先必须找到物体投射…
下面是我对模板缓存创建的理解: 1. 模板缓存是和深度缓存一起被创建的,将深度缓存的一部分作为模板缓存使用. 深度缓存和模板缓存是在Direct3D初始化时创建的,D3DPRESENT_PARAMETERS结构便包含了深度缓存和模板缓存的格式 typedef struct D3DPRESENT_PARAMETERS { UINT BackBufferWidth; UINT BackBufferHeight; D3DFORMAT BackBufferFormat; UINT BackBufferC…
缓存系列之一:buffer.cache与浏览器缓存 一:缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较快的一方起到一个加速访问速度较慢的一方的作用,比如CPU的一级.二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据硬盘往往不能在短时间内满足CPU的需求,因此PCU缓存.内存.Raid 卡以及硬盘…
模板测试(Stencil Test)是现代渲染流水线的一环,其中涉及到的就是模板缓冲(Stencil Buffer),模板缓冲可以用来制作物体的遮罩.轮廓描边.阴影.遮挡显示等等效果 目录 Stencil 常见语法格式 关键字 自定义一些值 Comp比较函数 Operation 模板测试判断依据 轮廓描边 思路+Code 产生的问题 实现Unity遮罩的方法 非欧几里得空间 遮罩的处理 多个面互相不干扰 代码部分 基于Stencil的镜面效果 如何反转? 传送矩阵的工具物体 MirrorObj…
刚在草稿箱里发现了这篇充满特色的好日志.发表之. ------------------吃货的分割线---------------------------------------- Stencil Buffer,就好像是在蛋糕表面撒糖粉时用的糖粉筛. 能通过测试的糖粉(片元)就会撒到(绘制到)蛋糕表面(当前颜色缓存,可以不).…
文献地址:http://wangdg.com/understanding-and-tuning-solr-cache/ 理解Solr缓存及如何设置缓存大小 为了得到最好的检索性能,Solr会在内存中缓存不同的数据: Result Set: 检索结果 Filter: filter query结果 Document Field: 文档的字段值 所以随后类似的检索可以被快速处理. Solr缓存并不复杂,但是理解它们是如何工作的,知道如何调整以适应自己的业务就比较重要了.本文介绍Solr各种不同的缓存,…
$templateCache 第一次使用模板,它被加载到模板缓存中,以便快速检索.你可以直接将模板标签加载到缓存中,或者通过$templateCache服务. 通过script标签: <script type=”text/ng-template” id=”template.html”> <p>This is the content of the template</p> </script> 备注:script标签模板不需要包含在文档头部.但他必须在$root…
直接上代码吧 一:主窗口 /*#region SendChooseTargetTemplate 发送候选人主窗口模板*/ var SendChooseTargetTemplate = ''; SendChooseTargetTemplate += '<div id="hwsendChooseTarget_${UserId}" style="display:block" class="content_body">'; SendChoos…
理解模板类型推断(template type deduction) 我们往往不能理解一个复杂的系统是如何运作的,但是却知道这个系统能够做什么.C++的模板类型推断便是如此,把参数传递到模板函数往往能让程序员得到满意的结果,但是却不能够比较清晰的描述其中的推断过程.模板类型推断是现代C++中被广泛使用的关键字auto的基础.当在auto上下文中使用模板类型推断的时候,它不会像应用在模板中那么直观,所以理解模板类型推断是如何在auto中运作的就很重要了. 下面将详细讨论.看下面的伪代码: templ…
AngularJS的指令中经常定义模板(template或templateUrl),可以选择将Html模板直接寄宿在WEB容器中,如Tomcat.IIS.Nginx.NodeJs Express,也可以选择ngTemplate模式,将Html模板放在view的page上,或直接将所有模板打包成一个javascript和应用的javascript合并成一个javascript文件一起发布. 对于ngTemplate寄宿模式,ngTemplate模板,可以在页面中这样定义 <script type=…
前面介绍了文件通道的读写操作,其中用到字节缓存ByteBuffer,它是位于通道内部的存储空间,也是通道唯一可用的存储形式.ByteBuffer有两种构建方式,一种是调用静态方法wrap,根据输入的字节数组生成对应的缓存对象:另一种是调用静态方法allocateDirect,根据输入的数值分配指定大小的空缓存.字节缓存又是一种特殊的存储空间,因为它可能会被多次读写,所以为了有效地控制读写操作,Java给它设计了下列五种概念:容量.当前限制量.当前位置.本次剩余空间.标记位置,分别说明如下:1.容…
Spring boot2 整合 Thymeleaf 后 去除模板缓存 网上好多文章只是简单粗暴的说,在 application.properties  做如下配置即可: #Thymeleaf cache set spring.thymeleaf.cache=false 然后重启,我点击刷新,然后并没有什么变化,关键点在这里: 修改完html后一定要 ctrl+f9 重新build 一下.再回到浏览器刷新,就能看到效果 本博客地址: wukong1688 本文原文地址:https://www.cn…
因为AngularJs的特性(or 浏览器本身的缓存?),angular默认的HTML模板加载都会被缓存起来.导致每次修改完模板之后都得经常需要清除浏览器的缓存来保证浏览器去获得最新的html模板,自己测试还好,但如果更新了服务器的模板内容,用户可不会每个都配合你去清除浏览器的缓存.故这还真是个大问题. app.config(function($routeProvider, $locationProvider) {         $routeProvider .when('/Book/:boo…
上一篇文章我写了koa-static的源码解析,其中用到了HTTP的缓存策略,给返回的静态文件设置了一些缓存的头,比如Cache-Control之类的.于是我就跟朋友讨论了一下HTTP的缓存策略: 朋友说:"HTTP里面控制缓存的头(header)太多了,啥Cache-Control,ETag,Last-Modified,一大堆,乱七八糟的,而且之间逻辑关系不强,要掌握基本靠背!" 我有点惊讶:"为什么要去背这个呢?所有的技术都是为了解决问题而存在的,不了解问题而去单纯的学习…
Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = 24677460 FO[3][2] = 10321516                    1          2          3          4          5          6 1              total       used       free  …
概念讲解,转自https://www.cnblogs.com/lxzh/archive/2013/05/10/3071680.html  ,将的非常好! Buffer 类是 java.nio 的构造基础.一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索.缓冲区可以被写满或释放.对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer.CharBuffer.DoubleBuffer.Floa…
吐血推荐文章: Linux内存中的Cache真的能被回收么? free中的buffer和cache: redhat对free输出的解读 两者都是RAM中的数据.简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的. (free中的buffer和cach它们都是占用内存的) A buffer is something that has yet to be "written" to disk. A cache is something that has been &…
注:本文内容面向Runtime App. 在新建项目后,细心观察,你会发现在App类中有以下代码: // TODO: 将此值更改为适合您的应用程序的缓存大小 rootFrame.CacheSize = ; 这行代码放在了OnLaunched方法中,CacheSize是Frame类的一个公共属性. 我们知道,Frame类负责完成页面之间的导航,它本身就是一个容器控件.CacheSize属性用于告诉Frame对象,要缓存的页面数量.近日,有人提问说,这个缓存页面数是不是导航记录的数量? 明确地告诉你…
编码环境windows10 编码IDE:phpstorm 2016.2 PHP框架:laravel5.3 + 代码运行环境:centos7 + nginx 在开发过程中,上传blade模板文件到linux中,访问以后生成缓存,使得后面的blade模板更改不生效. 问题原因是:phpstorm上传文件会携带修改时间戳,而我的linux与widows开发环境时间不一致,linux与windwos时差8个小时. so 也就是说,上传的文件,在8小时候以后才过期.这对开发来说无法 接受 ... 解决办法…
我的大多数读者都知道缓存是一种快速.小型.存储最近已访问的内存的地方.这个描述相当准确,但是深入处理器缓存如何工作的"枯燥"细节,会对尝试理解程序性能有很大帮助. 在这篇博文中,我将通过示例代码来说明缓存是如何工作的,以及它对现实世界中程序性能的影响. 虽然例子用的是 C#,但是不论哪种编程语言,对性能数据和最终结论的影响很小. 例1:内存访问和性能 你预计运行 循环2 比 循环1 快多少? 1 2 3 4 5 6 7 8 9 int[] arr = new int[64 * 1024…
从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态众所周知, CPU是计算机的大脑, 它负责执行程序的指令; 内存负责存数据, 包括程序自身数据. 同样大家都知道, 内存比CPU慢很多. 其实在30年前, CPU的频率和内存总线的频率在同一个级别, 访问内存只比访问CPU寄存器慢一点儿. 由于内存的发展都到技术及成本的限制, 现在获取内存中的一条数据大概需要200多个CPU周期(CPU cycles), 而CPU寄存器一般情况下1个CPU周期就够了. CPU缓存 网页浏览器为了加…
free命令用于查看linux内存使用情况 #free shared:用于进程之间相互共享数据. Used:已使用内存. total:内存总量. free:未使用的内存. available:开启一个新程序能够使用的最大内存. buffer与cache的作用 buffer:在内存中还没有被写入到磁盘的something. 作用:为了解决CPU向磁盘中存储something时的速度差,将积攒一大波something再向磁盘中存储一次,buffer用于积攒something. cache:已经从磁盘…
session的缓存有两大作用 (1)减少访问数据库的频率.应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据的速度快多了,音系Session的缓存 可以提高数据库访问性能 (2)保证缓存中的对象与数据库中的相关记录保持同步,位于缓存中的对象被称为持久化对象.当缓存中持久化对象的状态发生了变换,Session并不会立即执行相关的sql语句,这使得Session能够把几条相关的sql语句并为一条sql语句,以便减少访问数据库的次数,从而提高应用程序的性能,以下程序代码对Customer的…