在使用c#进行Unity开发时, 构建一个对象只需要New对象构造函数(),我们并不知道如何回收该对象。那么就有一个问题: 该对象在创建时,其内存是如何分配的;以及何时对该对象进行回收,如何回收其对应内存? 由于c#并没有提供直接可操作内存的方法(unsafe除外,一般不会使用),所以上面的问题都交给了一个叫做垃圾回收器的东西,它既为创建对象分配内存,又回收对象内存。在Mono中使用的垃圾回收器为SGen, 这是一款专门为Mono设计的垃圾回收器,下面就来初步认识一下SGen。
DX12入门笔记
发表于
更新于
DX12和DX11相比有了很多的变化,最核心的便是拉近了开发者和硬件的距离,让开发者能够更接近底层。对于硬件的控制DX12更加直接,更加高效,也增加了更多了可能性(多线程渲染);但与此同时与DX11相比开发者的额外工作量也增加了不少。下面是个人学习笔记的一些整理,希望和大家分享。
基础流程介绍
基础流程的学习主要参考了微软官方DX12编程指南中,创建基础的DX12组件(Creating a basic Direct3D 12 component))这一章节。
可以看到DX12是通过commandList将渲染指令提交给GPU的,此时cpu和gpu是异步执行的,而他们之前的同步是通过fence实现的。
浅谈HBAO
发表于
更新于
Protocol Buffers Efficient Encoding
发表于
更新于
Unity和Mono的关系
发表于
更新于
从.Net Framework谈到Mono
.Net Framework
由于本文的目的是探索mono与unity的关系,所以.net Framework部分的整理会相对简单一些,主要目的是为理解mono做一个铺垫。
.net Framework简单来说是微软推出的一个跨平台基础(只有windows实现)框架, c#则是运行在该框架下的编程语言。
为什么说它是一个跨平台的框架呢?原因在于它是基于通用语言基础架构(Common Language Infrastructure, 简称CLI)实现的。
CLI的提出旨在统一不同的高级开发语言在不同平台直接执行方式的差异。 按照CLI的规定,用来描述可执行代码的是一种叫做CIL(Common Intermediate Language)的语言,这是一种介于高级语言和机器语言之间的中间语言。
不同语言统一成CIL后,通过不同平台CLR(Common Language Runtime)翻译器机器指令,从而实现大一统。