<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[吾爱豆的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BDalasja</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BDalasja]]></copyright><item><title><![CDATA[吾读 - 《深入理解计算机系统》第三章 程序的机器级表示 (二) 跳转和循环]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/108478645</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/108478645</guid><author>BDalasja</author><pubDate>Tue, 08 Sep 2020 22:22:02 +0800</pubDate><description><![CDATA[上一篇我们初步认识了寄存器，学会了几个简单的汇编指令，例如mov，以及几种寻址模式。寻址模式不仅在mov指令中有用，各种指令都是通过这种方式来读取或写入内存中的值。
一个程序有各种函数，一个函数中也可能有复杂的结构，判断、循环等等，这些东西在汇编中又是什么样的呢？if-else, for, while, switch这些常见的结构会被翻译成怎样的汇编代码呢？

3.5 算术和逻辑操作
本节要接触多更多汇编操作指令，主要以算术及逻辑操作为主，分为四类，参见下图：


加减乘，没有除，这是为什么呢？因为除法比.]]></description><category></category></item><item><title><![CDATA[吾读 - 《深入理解计算机系统》 第三章 程序的机器级表示 (一) 寄存器初步认识]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/108434952</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/108434952</guid><author>BDalasja</author><pubDate>Sun, 06 Sep 2020 18:54:12 +0800</pubDate><description><![CDATA[3.2 程序编码
第一章已经介绍过代码如何编译成可执行程序的几个步骤，最终的可执行程序是二进制的，那么系统是怎么读这些二进制的呢？
3.2.1 机器级代码
能够理解汇编代码以及它是如何与原始的C代码相对应的，是理解计算机如何执行程序的关键一步。
基本概念：

程序计数器 成为%eip，表示将要执行的下一条指令在存储器中的地址。
整数寄存器有8个，可以存储32位的值。
条件码寄存器保存着最近执行的算术指令的状态信息，用来实现条件控制。
浮点寄存器也有8个。

到了汇编这一层，已经不区分有符号和无符号，各种数据]]></description><category></category></item><item><title><![CDATA[吾读 - 《深入理解计算机系统》第二章 信息的表示与处理 (二）浮点]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/108412270</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/108412270</guid><author>BDalasja</author><pubDate>Fri, 04 Sep 2020 22:01:51 +0800</pubDate><description><![CDATA[浮点数绝对是计算机系统里最神秘的一种数值。在不了解它之前，很难想象同样是32位数值，int只能表示最大2的31次方，而浮点的表示范围却是-126到正的127次方。
以及浮点还能表示无穷大，NaN等特殊值。
我们也被教育浮点数计算的一些计算规则，例如很大的浮点跟小的浮点计算的时候，要先算小的。
例如判断浮点跟0时，时常使用  if (fval &lt;= 0.00001f) 这种表达式来判断数值是不是可以被当做0了。
今天我们就来一起走近神奇的浮点数。

2.4 浮点
浮点数对形如V=x∗2yV = x*2.]]></description><category></category></item><item><title><![CDATA[解决Win32程序内存超2G崩溃问题]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/108317133</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/108317133</guid><author>BDalasja</author><pubDate>Mon, 31 Aug 2020 10:53:37 +0800</pubDate><description><![CDATA[长期以来，我们游戏的PC版本一直饱受崩溃的困扰。其中最大的崩溃原因是在各服务器一村的地方开启大视距之后，就很容易崩溃。一度怀疑是内存问题，但在实际运行中发现应用占用的内存在1.7G左右就崩溃了。
后续经过一系列排查，崩溃的堆栈也让人匪夷所思。例如在一个函数内部，前几行各数值显示还正常，后面指针指向的内存就如同是被释放过的内存。这不禁让人联想到野指针重复释放的问题。顺着这个方向，加了不少log，最终无济于事，无法确定问题所在。
经过多次测试、调试，终于有几次是崩溃在glBufferData函数调用中，并且有G]]></description><category></category></item><item><title><![CDATA[吾读 -《深入理解计算机系统》第二章 信息的表示和处理一 整数]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/108312477</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/108312477</guid><author>BDalasja</author><pubDate>Sun, 30 Aug 2020 22:45:45 +0800</pubDate><description><![CDATA[第二章 信息的表示和处理
2.1 信息存储
三种最重要的数字编码：

无符号：基于传统的二进制表示法，表示大于等于0的数字
二进制补码是便是有符号整数的最常见方式。
浮点数是表示实数的科学计数法的以二为基数的版本。

由于表示的精度有限，浮点数运算时不可结合的。计算顺序会影响到结果。
2.1.2. 字节
大多数计算机使用8位的块，也叫做字节，用来作为最小的可寻址的存储器单位。
在脑海中记住A,C,F对应的十进制和二进制数值，其他的BDE就可以通过跟前面的相对关系来得到。
A  10   1010,     ]]></description><category></category></item><item><title><![CDATA[吾读 -《深入理解计算机系统》第一章计算机系统漫游]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/108307346</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/108307346</guid><author>BDalasja</author><pubDate>Sun, 30 Aug 2020 16:05:35 +0800</pubDate><description><![CDATA[第一章 计算机系统漫游
1. 编译
源程序 -》预处理器 -》被修改的源程序 -》编译器 -》汇编程序-》汇编器 -》.o文件，可重定位的目标程序 -》 连接器 -》可执行程序。

预处理阶段   预处理器(cpp)处理include，宏等，得到.i中间文本文件
编译阶段    编译器(ccl)将.i文件翻译成汇编程序，得到.s文本文件
汇编阶段    汇编器(as)将.s文件翻译成机器语言指令，得到.o二进制文件
链接阶段    链接器(ld)链接其他需要的.o文件，得到可执行目标二进制文件

gcc -]]></description><category></category></item><item><title><![CDATA[UE4 角色预览与头像生成  CaptureSceneComponent2D 看这一篇就够了]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/105478935</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/105478935</guid><author>BDalasja</author><pubDate>Sun, 12 Apr 2020 23:42:05 +0800</pubDate><description><![CDATA[游戏开发中的捕获需求

在游戏开发过程中，对角色的预览，和某些情况下生成头像是比较常见的需求。有些引擎，可以创建一个额外的场景和相机，然后将需要的内容放置到合适的位置，然后可以获得想要的图像。在UE4中不是这样，没法创建其他的场景，我们需要使用CaptureSceneComponent2D，字面意思看出来这是个场景捕获的组件，它就是用来捕获我们想要的场景内容到2D图像上。
CaptureScene...]]></description><category></category></item><item><title><![CDATA[Roblox 开发过程中的一些小技巧]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/102482006</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/102482006</guid><author>BDalasja</author><pubDate>Thu, 10 Oct 2019 15:17:54 +0800</pubDate><description><![CDATA[1. 建筑方块预览

在制作建造类方块游戏的时候，我们可能需要提前让玩家知道，一个东西摆放出来的位置、样子等等。这个时候我们希望能显示半透或者其他什么效果的实际模型给玩家预览。
Roblox为了安全考虑，目前已经禁止在LocalScript中创建Part等模型（以前有个模式可以，现在正在废弃，不要使用）。那么怎么实现我们这个需求呢？

由服务器创建一个目标模型，挂载玩家的Player下面。不要放在...]]></description><category></category></item><item><title><![CDATA[Roblox 插件制作]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/101164191</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/101164191</guid><author>BDalasja</author><pubDate>Sun, 22 Sep 2019 17:57:52 +0800</pubDate><description><![CDATA[官方相关的一些文档：
Intro to Plugins
CreateDockWidgetPluginGui


首先在ServerStorage下面建一个Script，然后右键脚本，选择Save as Local Plugin 然后保存到本地脚本


创建Plugin下的toolbar
local toolbar = plugin:CreateToolbar("BlockTools")  -- 创...]]></description><category></category></item><item><title><![CDATA[Roblox GUI 动画]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/100862936</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/100862936</guid><author>BDalasja</author><pubDate>Sun, 15 Sep 2019 20:20:16 +0800</pubDate><description><![CDATA[GUI动画
官方文档-UI动画
官方文档-TweenSize参数说明
本节中界面动画主要使用tween和tweenservice来进行界面动画。在设计界面的时候，tweening可以用来平滑的变换界面的位置和状态。比如：

平滑的放大一个选中的按钮
从屏幕的边缘滑入或者滑出界面
当血量发生变换的时候，血条进行动画过渡。

1. 基础变换
在界面控价下添加一个LocalScript来控制界面的动作
...]]></description><category></category></item><item><title><![CDATA[Roblox GUI 简介]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/100830633</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/100830633</guid><author>BDalasja</author><pubDate>Sun, 15 Sep 2019 20:14:40 +0800</pubDate><description><![CDATA[做任何游戏都离不开界面，Roblox游戏也不例外，那么Roblox的界面系统到底该如何使用呢？都有什么控件可以使用呢？
StarterGui
点击StarterGui旁边的加号就可以创建ScreenGui

ScreenGui相当于是一个容器，一个画板，上面现在什么也没有。接下来我们就创建一个具体的控件。在Roblox里面的坐标系跟Windows的坐标系一致，左上角是(0，0)位置

在explo...]]></description><category></category></item><item><title><![CDATA[UE4 版本迭代、资源热更、pak更新方案]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/95622429</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/95622429</guid><author>BDalasja</author><pubDate>Fri, 12 Jul 2019 15:38:36 +0800</pubDate><description><![CDATA[版本patch方案详细实施方案
注意：以下讨论的内容是客户端热更，打包的时候勾选使用pak文件。
前置知识

详细可参考之前的文章 , 这里再简单回顾一下。


客户端进行打包之后，所有的资源及蓝图文件都在paks文件夹中的pak文件中。


paks文件夹中所有的pak文件，会全部自动挂载。


所谓挂载，就是读取pak中的文件列表信息，并不加载实际的资源文件。实际加载文件的时候会遍历所有挂载的...]]></description><category></category></item><item><title><![CDATA[UE4中Pak文件的读取规则]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/95618330</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/95618330</guid><author>BDalasja</author><pubDate>Fri, 12 Jul 2019 14:52:07 +0800</pubDate><description><![CDATA[UE4是如何读取Pak的？多个Pak文件直接如何相互作用？UE4又是按什么规则来加载Pak中的文件？]]></description><category></category></item><item><title><![CDATA[google登录、成就、支付接入]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/80005842</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/80005842</guid><author>BDalasja</author><pubDate>Thu, 19 Apr 2018 15:39:07 +0800</pubDate><description><![CDATA[一 登录接入准备
登录官方文档
在上面的网址中，点击 CONFIGURE A PROJECT来创建一个登录的工程
按要求生成 SHA-1  keytool -exportcert -keystore your_keystore -list -v
注意 ==如果编译的版本使用的keystore和这里用的keystore不同，则登录时会log中会报错 Status{statusCode=DEVELOPE]]></description><category></category></item><item><title><![CDATA[《Unity Shader入门精要》笔记(六) 高级效果]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/79145093</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/79145093</guid><author>BDalasja</author><pubDate>Thu, 25 Jan 2018 11:32:16 +0800</pubDate><description><![CDATA[第十二章 屏幕后处理效果


什么叫屏幕后处理效果？


  一种屏幕特效处理方法，应该是基于场景绘制完之后，再处理的一些效果，所以叫后处理。

有什么样的效果可以在在屏幕后处理中完成？


  其实场景渲染完之后，就相当于是一个图片了，对图片的特效的都可以在这里完成，比方对比度、亮度、饱和度、模糊、黑白色等等。
  
  在相机上挂上脚本，实现OnRenderImage函数
  Graphics]]></description><category></category></item><item><title><![CDATA[《Unity Shader入门精要》笔记(五)  高级纹理and纹理动画]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/79132889</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/79132889</guid><author>BDalasja</author><pubDate>Tue, 23 Jan 2018 18:24:42 +0800</pubDate><description><![CDATA[第10章 高级纹理


什么是立方体纹理？有哪些用途？如何采样？


  环境映射的一种方法，有六面。提供一个三维向量坐标，然后从立方体中心出发，与六面之一相交。 
  实现简单快速，效果好。场景变化的时候需要重新生成纹理。 
  立方体纹理不能模拟多次反射的结果 
  主要用于天空盒及环境映射。

如何生成立方体纹理？如何使用？


  特殊布局的纹理，也可设置为Cubemap
  自己提供六张]]></description><category></category></item><item><title><![CDATA[《Unity Shader入门精要》笔记(四)  光照and阴影的理解]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/79125730</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/79125730</guid><author>BDalasja</author><pubDate>Mon, 22 Jan 2018 19:42:32 +0800</pubDate><description><![CDATA[第九章 更复杂的光照


渲染路径是指什么？什么作用？


  一种能让Unity知道设定哪些预制变量数据的参数。有前向渲染路径、延迟渲染路径和顶点照明渲染路径 
  通过在每个Pass中设置Tags{“LightMode” = “ForwardBase”}来实现 
  参考UntiyPassTags设置
  前向渲染：深度检测，对各片元进行依次进行多个光照计算，每个光源都要计算一次Pass。(缺]]></description><category></category></item><item><title><![CDATA[《Unity Shader入门精要》笔记(三) 基础纹理及透明效果]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/79120129</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/79120129</guid><author>BDalasja</author><pubDate>Sun, 21 Jan 2018 16:10:11 +0800</pubDate><description><![CDATA[第七章 基础纹理
如何理解纹理？纹理和单纯的颜色有什么区别吗？
普通贴图纹理是存储一系列颜色的文件，有了纹理坐标，通过一定的函数就能获取到指定的颜色。本质上跟直接使用颜色没太大区别。然而在使用中，我们可以把部分纹理的数据处理成别的含义，就是高度、法线等不同含义的纹理，<font color=tomato>纹理可以存储任何表面属性</font>。通过不同的数据综合处理，可以得到很多不一样的效果。]]></description><category></category></item><item><title><![CDATA[《Unity Shader入门精要》笔记(二) 光照初体验]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/79100976</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/79100976</guid><author>BDalasja</author><pubDate>Thu, 18 Jan 2018 22:43:42 +0800</pubDate><description><![CDATA[第五章 开始Unity Shader学习之旅


Shader的属性是用来干嘛的？如何定义？Pass中如何使用这个属性？


  属性主要是在Unity的编辑器面板显示、修改用的。定义参考UntiyShader官方文档 
  pass中想要使用这个属性，需要定义一个同名变量。shader中属性变量一般以下划线开始，例如fixed4 _Color;

指定顶点、片元着色器函数


  着色器代码在C]]></description><category></category></item><item><title><![CDATA[《Unity Shader入门精要》笔记(一) 预备知识及数学基础]]></title><link>https://blog.youkuaiyun.com/BDalasja/article/details/79088643</link><guid>https://blog.youkuaiyun.com/BDalasja/article/details/79088643</guid><author>BDalasja</author><pubDate>Thu, 18 Jan 2018 15:17:07 +0800</pubDate><description><![CDATA[第一章 简介

nothing





第二章 渲染流水线


什么是流水线？ 什么是管线


  GPU渲染的过程就流水线。  
  

Shader在管线中的位置？ Shader能做到那些功能，做不到哪些？


   
  为什么裁剪在顶点、几何着色器之后？  几何着色器可能会修改顶点。

什么是DrawCall？ DC为什么慢？


  DrawCall就是CPU发起一次绘制请求，绘制相关]]></description><category></category></item></channel></rss>