<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a727674650的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/a727674650</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a727674650]]></copyright><item><title><![CDATA[Unity3D中C#底层原理]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/126907741</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/126907741</guid><author>a727674650</author><pubDate>Sat, 17 Sep 2022 16:57:57 +0800</pubDate><description><![CDATA[Unity 中C#底层原理]]></description><category></category></item><item><title><![CDATA[C/C++ 流水线 缓存以及优化]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/121237490</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/121237490</guid><author>a727674650</author><pubDate>Wed, 10 Nov 2021 23:16:23 +0800</pubDate><description><![CDATA[抄书笔记 《游戏引擎架构》第二版
游戏是软实时系统。软实时系统是指游戏软件必须在限期内完成操作——游戏中最显然的需求是没帧必须在16.6ms（以达到60FPS）或者33.3ms（以达到30FPS）内完成。软的部分是指没有人会因为帧率而死亡（相对医疗和交通系统的硬实时系统，如果不能在有限的时间内完成操作可能导致严重意外）。尽管如此，无需怀疑，游戏需要尽可能的高效运行。
一 并行范式转移
优化软件的性能，就要了解什么使软件变慢。
在早期计算机中，CPU相对较慢，因此程序员在优化代码的过程中，会集中降低任务所花费]]></description><category></category></item><item><title><![CDATA[C/C++内存布局]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/121153459</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/121153459</guid><author>a727674650</author><pubDate>Tue, 09 Nov 2021 00:20:56 +0800</pubDate><description><![CDATA[读书笔记：游戏引擎架构第二版
目的：了解存储空间如何分配，多种C/C++变量类型如何运作，需要认识的C/C++的内存布局。
一 可执行映像
当生成C/C++ 程序时，链接器创建可执行文件，这种流行的可执行文件格式 称为可执行与可链接格式。一些平台的可执行文件格式.elf 作为扩展名，windows上的可执行文件格式使用.exe作为扩展名。
无论是哪种文件格式，可执行文件总是包含程序的部分映像，程序执行时这部分映像会放在内存中。之所以被称为部分映像是因为：由于程序除了把可执行映像置于内存中，一般也会分配额外的]]></description><category></category></item><item><title><![CDATA[ADB调试]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/119412378</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/119412378</guid><author>a727674650</author><pubDate>Thu, 05 Aug 2021 10:59:54 +0800</pubDate><description><![CDATA[ADB调试
准备工作：简单方便 使用UnityHub直接安装Unity，然后安装andriod相关的SDK和JDK即可。
1、从Unity的Editor 的Preferences-External Tools 拷贝出SDK的文件目录，目录如下：
“C:\Program Files\Unity\Hub\Editor\2021.1.16f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools\adb.exe”  //别太轴，不同的人安装路]]></description><category></category></item><item><title><![CDATA[Unity游戏开发UI框架（3）]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/116565091</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/116565091</guid><author>a727674650</author><pubDate>Sun, 09 May 2021 15:59:49 +0800</pubDate><description><![CDATA[这应该是最后一篇文章了。
前面的内容都是通过调用MySceneManager，进行状态（场景）切换，也就是核心就在他，一切的所有的内容都是围绕他进行的。控制了中枢MySceneManager，就控制了整个场景的切换。
同样的UI方面的处理也是一样的。唯一特别的就是LoadingPanel的处理，有那么一点点不同。之后详细说。
其他界面的处理思路和状态的处理一模一样的。但是考虑到UI有很多种，其中有全屏的（还分为透明和不透明的），有半屏的。这两个区别就是显示全屏的UI，后面的其他UI可以不用显示了，但是那种透]]></description><category></category></item><item><title><![CDATA[Unity游戏开发UI框架（2）]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/116564345</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/116564345</guid><author>a727674650</author><pubDate>Sun, 09 May 2021 15:07:25 +0800</pubDate><description><![CDATA[上一篇文章写了介绍了扩展方法递归查找子物体，单例基类，框架常用的消息机制的简单版本（这个会在加载loading界面用到这个机制，之后会介绍的）。这一篇先把一个简单的AB包管理器介绍一下，至于具体怎么打ab包，自行搜索引擎就行了。

Unity的PackManger提供了AB包打包相关的东西，看官网即可。
AB管理最重要的其实就是依赖项的处理，避过这个坑其实没什么好说的。

一、AB包管理的代码；
using System.Collections;
using System.Collections.Gener]]></description><category></category></item><item><title><![CDATA[Unity游戏开发UI框架（1）]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/116563157</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/116563157</guid><author>a727674650</author><pubDate>Sun, 09 May 2021 14:15:34 +0800</pubDate><description><![CDATA[最近有点累了，所以写一些文章放松一下。
简单说一下我的一些不成熟的关于学习游戏开发的想法吧。这个框架是来自某培训机构的一位姓朱的老师教给我的，如果是我同期的U3D开发的同学大概就知道我说的是谁了，再此非常感谢老朱！
说一下自己的学习曲折道路吧，希望不要和我一样走弯路。在新手阶段，也就是说没有真正的在商业项目中磨炼不到一两年的，不要去造轮子！能看懂，能用，并且会用是最重要的！程序员，没有一定的代码积累是很难达到随心所欲的行云流水的一般的写出高质量的代码的。等有了一定的积累，然后再去修改一部分开源插件的功能，甚]]></description><category></category></item><item><title><![CDATA[内存组织、拆箱、和装箱]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/113059736</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/113059736</guid><author>a727674650</author><pubDate>Sat, 23 Jan 2021 18:20:09 +0800</pubDate><description><![CDATA[抄书笔记：Visual C# 从入门到精通（第九版）
C#大多数基元类型（int、float、doubule和char等，string除外，这是个特殊的引用类型，他的本质上是一个char类型的数组）都是值类型；将变量声明为值类型，编译器会生成代码来分配足以容纳这种值得内存块。
例如：声明int类型的变量，会导致编译器分配4字节（32位）内存块，像这个变量赋值，将导致值会被赋值在内存块当中。
引用类型和值类型的处理方式不一样。例如一个类，声明一个类的变量的时候，编译器不生成代码来分配足以容纳一个类的内存块。相]]></description><category></category></item><item><title><![CDATA[优化相关知识05 其他方面的优化]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/112913888</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/112913888</guid><author>a727674650</author><pubDate>Wed, 20 Jan 2021 23:59:24 +0800</pubDate><description><![CDATA[抄书笔记： UntiyShader 入门精要 冯乐乐
另一个造成GPU瓶颈的的需要处理过多的片元。这一部分优化的重点在于减少overDraw，overDraw就是同一个像素被绘制的多次。
1、控制绘制顺序
为了最大限度的避免overdraw，一个重要的优化策略就是控制绘制顺序。由于深度测试的存在，如果可以保证物体都是从前往后的绘制的。那么就可以很大程度上减少overdraw。这是因为，在后面的绘制的物体无法通过深度测试，因此就不会在进行后面的渲染处理了。
在Unity，如果那些渲染队列小于2500（Back]]></description><category></category></item><item><title><![CDATA[优化相关知识04 减少片元数目的处理]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/112913427</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/112913427</guid><author>a727674650</author><pubDate>Wed, 20 Jan 2021 23:16:58 +0800</pubDate><description><![CDATA[抄书笔记：UnityShader入门精要  冯乐乐
另一个造成GPU瓶颈的的需要处理过多的片元。这一部分优化的重点在于减少overDraw，overDraw就是同一个像素被绘制的多次。
1、控制绘制顺序
为了最大限度的避免overdraw，一个重要的优化策略就是控制绘制顺序。由于深度测试的存在，如果可以保证物体都是从前往后的绘制的。那么就可以很大程度上减少overdraw。这是因为，在后面的绘制的物体无法通过深度测试，因此就不会在进行后面的渲染处理了。
在Unity，如果那些渲染队列小于2500（Backg]]></description><category></category></item><item><title><![CDATA[优化相关知识03 减少顶点数目处理]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/112911940</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/112911940</guid><author>a727674650</author><pubDate>Wed, 20 Jan 2021 21:54:11 +0800</pubDate><description><![CDATA[抄书笔记  ：UnityShader 入门精要  冯乐乐
尽管DrawCall是一个非常重要的性能指标，但是顶点数目同样可能成为GPU的瓶颈。
接下来会写出3个常用的顶点优化策略。
1、优化几何体
3D游戏制作通常是由模型制作开始的。在建模的时候，一条规则特别重要：尽可能减少模型的三角面片的数目。一些对于模型没有影响，或者是肉眼非常难察觉的到区别的顶点都要尽可能的去掉。为了尽可能减少模型中的顶点数目，美工人员往往需要优化网格结构。在很多三维建模的软件都有相应的优化选项，可以自动优化网格结构。
通常来说，Un]]></description><category></category></item><item><title><![CDATA[优化相关知识02动、静态批处理]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/112911016</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/112911016</guid><author>a727674650</author><pubDate>Wed, 20 Jan 2021 21:11:50 +0800</pubDate><description><![CDATA[抄书笔记：UnityShader入门精要  冯乐乐
最常看到的优化技术就是批处理了。
批处理的实现原理就是为了减少每一帧需要的drawcall数目。为了把每一个对象渲染到屏幕上，CPU需要检查哪些光源影响了该物体，绑定sahder并设置他的参数，再把渲染命令传递给GPU。当场景中包含了大量的对象的时候，这些操作就会非常耗时。
一个极端的例子：如果需要渲染一千个三角形网格，把他们按一千个单独的网格进行渲染所消耗的世界要远远大于渲染一个包含了一千个三角形网格。这两种情况下，GPU的性能消耗其实没有多大的区别，但]]></description><category></category></item><item><title><![CDATA[优化相关知识01]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/112910965</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/112910965</guid><author>a727674650</author><pubDate>Wed, 20 Jan 2021 21:09:43 +0800</pubDate><description><![CDATA[抄书笔记：UnityShader入门精要  冯乐乐
移动平台的特点：
为了尽可能一处那些隐藏的表面，减少overdraw（一个像素被多次绘制），PowerVr芯片使用了基于瓦片的延迟渲染架构，把所有的渲染图像装进一个tile中（瓦片中），再由硬件找到可见的片元，而只有这些可见的片元才会执行片元着色器；
另一些基于瓦片的GPU架构，例如果高通的芯片，ARM的芯片，则会使用Early_z或者相似的技术进行一个低精度的深度检测，来剔除那些不需要的渲染的片元。
还有一些GPU例如英伟达的芯片，则使用了传统的架构，因]]></description><category></category></item><item><title><![CDATA[渲染流水线（笔记）]]></title><link>https://blog.youkuaiyun.com/a727674650/article/details/112715441</link><guid>https://blog.youkuaiyun.com/a727674650/article/details/112715441</guid><author>a727674650</author><pubDate>Sat, 16 Jan 2021 16:56:14 +0800</pubDate><description><![CDATA[《DirectX 12 3D游戏开发实战》
第一阶段：
输入装配阶段：
会从显存中读取几何数据（顶点和索引,vertex and index),在将他们装配为几何图元（三角形和线条这种构成图形的基本元素）；
1）顶点
2）图元拓扑
在Direct3D中，通过一种名为顶点缓冲区的特殊数据结构，将顶点与渲染流水线绑定。顶点缓冲区利用连续的内存来存储一系列顶点。但是仅仅凭这一点并不能说明这些顶点究竟是怎么组成的几何图元。
通过指定图元拓扑来告知Direct3D如何组成利用顶点数据来表示几何图元。（在用户通过命令列]]></description><category></category></item></channel></rss>