GPU有一个命令队列,CPU通过Direct3D API将命令提交到队列里来使用命令列表(command lists),如下图.当一套命令(a set of commands)已经被提交到命令队列,他们不会被GPU立刻执行,理解这一点非常重要.由于GPU很可能忙着处理之前插入的命令,所以它们会待在队列里直到GPU准备好处理它们. 如果命令队列空了,没有任何工作可做,GPU就会处于空闲状态:另一方面,如果命令队列太满,CPU在某个时刻必须停下来等着GPU追上来.这两种情况都不是我们希望看到的:对于…
由于有两个并行运行的处理器(CPU和GPU),会出现许多同步问题.假设我们有一些资源R存储了我们希望绘制的某些几何体的位置. 此外,假设CPU更新R的数据以存储位置p1,然后将引用R的绘图命令C添加到命令队列,目的是在位置p1处绘制图形. 将命令添加到命令队列不会阻塞CPU,因此CPU会继续运行. 在GPU执行绘图命令C之前,CPU继续并覆盖R的数据以存储新位置p2将会导致错误(参见下图). 这种情况的一种解决方案是强制CPU等待GPU完成处理队列中的所有命令直到指定的栅栏点(fence poi…
我们现在需要创建深度/模板缓冲区. 如§4.1.5所述,深度缓冲区只是一个2D纹理,用于存储最近的可见对象的深度信息(如果使用模板(stencil),则也会存储模板信息). 纹理是一种GPU资源,因此我们通过填写描述纹理资源的D3D12_RESOURCE_DESC结构,然后调用ID3D12Device :: CreateCommittedResource方法来创建一个. D3D12_RESOURCE_DESC结构定义如下: typedef struct D3D12_RESOURCE_DESC {…
在渲染过程中,GPU将写资源(resources)(例如,后缓冲区,深度/模板缓冲区),读资源(例如,描述表面外观的纹理,存储场景中几何体3D位置的缓冲区).在我们发出绘图命令之前,我们需要将资源绑定(或链接)(bind (or link))到将在该绘制调用中引用的渲染管道.有些资源可能每次绘制被调用时都会变化,因此我们需要在必要时更新每个绘制调用(draw call)的绑定.但是,GPU资源不是直接被绑定的.相反,资源是通过描述符对象(descriptor object)引用的,可以将其视为描…
为了避免动画中的闪烁,最好将整个动画帧绘制到称为后台缓冲区的屏幕外纹理(off-screen texture)中.一旦整个场景被绘制到给定动画帧的后缓冲区,它就作为一个完整的帧呈现给屏幕;以这种方式,观看者不会在绘制帧时观看到 - 观看者只能看到完整的帧.为实现这一点,硬件维护两个纹理缓冲区(texture buffers),一个称为前缓冲区(front buffer),另一个称为后缓冲区(back buffer).前缓冲区存储当前正在监视器上显示的图像数据,而下一帧动画正被绘制到后缓冲区.在将…
前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在三周之前,我偶然的得到了一本<SignalR Programming in Microsoft ASP.NET>,在晚上不工作的时候对这本书进行细细研读(到目前为止大概只研读了一半).虽然目前只有英文原版,但是这本书讲得很不错,即使需要抱着一本词典来辅助阅读,那也是值得的. OWIN的发展,不仅对…
上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这一章,我们将对框架与OwinHost之间怎么通过OWIN协议作出解析. 本章我们将讨论学习: (1).连接两世界之门——“Middleware“ (2).转动大门的钥匙,打开无尽的财宝 (3).适配器?转换插头 相关示例代码,可以点击这里进行下载. 1.充当”门“的”Middleware“ 英文名”…
早前的一两天<Linux.NET学习手记(8)>发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统.文中我们还直接学习如何直接操作OWIN字典,从OwinHost中拿数据进行直接使用. 不过文章发布之后,有朋友提示我,文章出了点细节上的问题,我细细度量之后,发现果然出了情况,并且还不是一个无关紧要的小问题,本打算把那篇文章下线,待修改好之后再重新上线,网友“王爷”提醒到,可以为文章专门写上一篇补充文,这样颇有手稿的感觉.考量之下我接受了王爷…
转载: [ASP.NET MVC]: - EF框架学习手记 1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架. 2.什么是ORM?ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的互相转换.(表实体跟表之间的相互转换)ORM框架有很多,EF框架是ORM框架的其中一种,是实现了ORM思想的框架. O=>表实体M=>映射关系R=>数据库.表 3.创建EF,添加-新建项-ADO.NET 实体数…
在演示应用中,我们已经创建好了viewport,并为之添加了一个菜单树.但也仅仅是这样,点击树或应用的其他地方获得不到任何响应.这个演示应用还是一个死的应用. 接下来,我们让这个应用活起来. 首先,给树添加一个点击事件.以前的做法是使用listener属性,添加事件监听及处理函数.现在的做法也是采用了类似的方法,修改MenuController.js: Ext.define('demo.controller.MenuController', { extend: 'Ext.app.Controll…