<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[He0_0Qing的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/He0_0Qing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; He0_0Qing]]></copyright><item><title><![CDATA[C++ Function pointer/函数指针]]></title><link>https://blog.youkuaiyun.com/He0_0Qing/article/details/123147950</link><guid>https://blog.youkuaiyun.com/He0_0Qing/article/details/123147950</guid><author>He0_0Qing</author><pubDate>Sat, 26 Feb 2022 12:34:45 +0800</pubDate><description><![CDATA[函数指针是存储函数地址的变量（指向函数的入口），以后可以通过该函数指针调用该函数地址。
用处：比如想要创建callback机制并且需要将函数的地址传递给另一个函数时。 当想要存储函数数组时，函数指针也很有用，例如动态调用
基础
#include&lt;iostream&gt;

void HelloWorld () {
    std::cout &lt;&lt; "Hello World" &lt;&lt; std::endl;
}
void printNum(int n) {
    std::cout]]></description><category></category></item><item><title><![CDATA[C++开发：template，模板]]></title><link>https://blog.youkuaiyun.com/He0_0Qing/article/details/109641675</link><guid>https://blog.youkuaiyun.com/He0_0Qing/article/details/109641675</guid><author>He0_0Qing</author><pubDate>Thu, 12 Nov 2020 13:28:17 +0800</pubDate><description><![CDATA[C++中的template，模板，是用来实现静态多态的。比如创建一个template Class之后，玩家可以选择他们想要的type，来创建一个想要的Class。
例子：
template &lt;typename T&gt;
class Test {
public:
	Max(T a1, T b1) :a(a1), b(b1) {};
private:
	T a;
	T b;
};

这时玩家可以这样
int main() {
	Test&lt;int&gt; T(10, 20);
	cout &lt;&]]></description><category></category></item><item><title><![CDATA[游戏开发：FixedUpdate（）]]></title><link>https://blog.youkuaiyun.com/He0_0Qing/article/details/108885333</link><guid>https://blog.youkuaiyun.com/He0_0Qing/article/details/108885333</guid><author>He0_0Qing</author><pubDate>Wed, 30 Sep 2020 15:19:41 +0800</pubDate><description><![CDATA[Update每帧运行一次，因为游戏帧率的波动，每次update的deltatime都会不同，也就是说，普通的update逻辑并不能保证每次运行和上次运行的时间间隔是固定的。假如我们要计算游戏场景中物体的物理变化，就不能保证其得到正确的运算。
这时我们就需要FixedUpdate（）来实现固定时间的运算。在Unity中有FixedUpdate方法，其固定更新的时间是0.02s，1秒执行50次，可在Edit—&gt;Project Settings—&gt;Time面板中的Fixed Timestep查看。
但]]></description><category></category></item><item><title><![CDATA[C++数据转换]]></title><link>https://blog.youkuaiyun.com/He0_0Qing/article/details/108884827</link><guid>https://blog.youkuaiyun.com/He0_0Qing/article/details/108884827</guid><author>He0_0Qing</author><pubDate>Wed, 30 Sep 2020 14:53:25 +0800</pubDate><description><![CDATA[char* to int

const char* a = "123"; int b = atoi(a);
手写atoi：

int atoi(const char* str) {
	const char* p = str;
	bool neg = false;
	int res = 0;
	if (*str == '-' || *str == '+') {
		str++;
	}

	while (*str != 0) {
	//可以在此处加判断是否当前char为数字
		res = res * 10 +]]></description><category></category></item><item><title><![CDATA[C++ STL库容器整理]]></title><link>https://blog.youkuaiyun.com/He0_0Qing/article/details/108316801</link><guid>https://blog.youkuaiyun.com/He0_0Qing/article/details/108316801</guid><author>He0_0Qing</author><pubDate>Wed, 30 Sep 2020 14:30:08 +0800</pubDate><description><![CDATA[C++ STL库 容器整理
Vector：

支持随机access
元素在内存中连续存储
会自适应扩容（容量满时插入，会创建一个新的容量为之前两倍的数组，然后原来的元素复制到新数组，原数组删除。但是删除的话并不会影响容量，所以要注意大量删除时，要记得收缩内存，以免造成浪费）
可access任意元素
在后面加很快速，其他位置很糟糕（要复制vector，然后增加进去，然后重新放在内存中一个地方）
使用方法：
定义：Vector&lt;‘datatype’&gt; V；
vec.begin(), vec.end(]]></description><category></category></item><item><title><![CDATA[前向渲染 vs 延时渲染]]></title><link>https://blog.youkuaiyun.com/He0_0Qing/article/details/108682693</link><guid>https://blog.youkuaiyun.com/He0_0Qing/article/details/108682693</guid><author>He0_0Qing</author><pubDate>Sat, 19 Sep 2020 16:27:16 +0800</pubDate><description><![CDATA[Forward Rendering VS Deferred Rendering
现代渲染管线：
现代渲染管线允许我们发送代码到显卡，去改变像素点的信息，像是使它们变得凹凸不平（使用法线贴图）或增加反射等等。
该代码采用几何形状，顶点着色器（Vertex Shader）和片段着色器（Fragment Shader）的形式，它们实质上改变了显卡渲染对象的方式。
前向渲染：
正向渲染是大多数引擎使用的标准，即用型的渲染技术。 我们为图形卡提供几何图形，将其投影并将其分解为顶点，然后将其转换并拆分为片段或像素，这些]]></description><category></category></item></channel></rss>