<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VisualGMQ的博客</title><link>https://visualgmq.github.io/</link><description>Recent content on VisualGMQ的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>visualgmq@outlook.com (VisualGMQ)</managingEditor><webMaster>visualgmq@outlook.com (VisualGMQ)</webMaster><copyright>© 2026 VisualGMQ</copyright><lastBuildDate>Mon, 31 Aug 2026 17:37:01 +0800</lastBuildDate><atom:link href="https://visualgmq.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>从0开始制作游戏物理引擎（八）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E5%85%AB/</link><pubDate>Mon, 31 Aug 2026 17:37:01 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E5%85%AB/</guid><description>&lt;p&gt;本文述说了在SceneQuery场景下的加速结构BVH。&lt;/p&gt;
&lt;p&gt;本文是SceneQuery的最后一篇文章。至此，所有的SceneQuery技术都已叙述完毕。&lt;/p&gt;
&lt;p&gt;当然还有其他空间划分方法（SAP，OctTree，K-DTree等）。但这些一般用于模拟时的空间划分，等到模拟章节再说。&lt;/p&gt;
&lt;p&gt;绝大部分理论来自于Erin Catto的GDC分享&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;（建议阅读）和PBRT&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;，而实现则参考PhysX5.4.0。&lt;/p&gt;
&lt;p&gt;BVH构建更多的理论来源于渲染中光线追踪方向。其中有很多乱七八糟的BVH构建（在CPU上，或使用并行计算，或在GPU上构建）。本文不说那么多乱七八糟的，只说常用的方法。&lt;/p&gt;</description></item><item><title>从0开始制作游戏物理引擎（七）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%B8%83/</link><pubDate>Thu, 27 Aug 2026 10:44:58 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%B8%83/</guid><description>&lt;p&gt;本章说明了射线检测Raycast算法。&lt;/p&gt;
&lt;p&gt;大部分Raycast都是使用向量方程的数值解直接得出，这种的公式大全&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;都有记载不再赘述。&lt;/p&gt;
&lt;p&gt;本文主要叙述：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;射线与凸多面体求交的Slab方法(Cyrus-Beck, Liang-Barsky和Kay-Kajiya)&lt;/li&gt;
&lt;li&gt;Gino编写的对任意凸体的Raycat算法的论文&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;解释。此算法也用来做任意凸体之间的Sweep算法。&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>从0开始制作游戏物理引擎（六）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E5%85%AD/</link><pubDate>Tue, 25 Aug 2026 16:27:21 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E5%85%AD/</guid><description>&lt;p&gt;本文解释了EPA算法及其常见实现。&lt;/p&gt;</description></item><item><title>游戏开发中的寻路（一）</title><link>https://visualgmq.github.io/posts/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E4%B8%AD%E7%9A%84%E5%AF%BB%E8%B7%AF%E4%B8%80/</link><pubDate>Thu, 06 Aug 2026 16:51:02 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E4%B8%AD%E7%9A%84%E5%AF%BB%E8%B7%AF%E4%B8%80/</guid><description>&lt;p&gt;本文说明了游戏开发中的寻路算法。从BFS到Dijkstra到A*以及A*的变体等。&lt;/p&gt;
&lt;p&gt;大部分参考这篇由浅入深的文章&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description></item><item><title>从0开始制作游戏物理引擎（五）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%BA%94/</link><pubDate>Sun, 19 Jul 2026 23:24:56 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%BA%94/</guid><description>&lt;p&gt;本文解释了GJK算法及其常见实现。&lt;/p&gt;</description></item><item><title>从0开始制作游戏物理引擎（四）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E5%9B%9B/</link><pubDate>Sun, 19 Jul 2026 01:12:56 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E5%9B%9B/</guid><description>&lt;p&gt;这一章描述了判交和MTD算法，包括SAT等。&lt;/p&gt;
&lt;p&gt;大部分的判交算法都在公式大全&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;中有推导。这里只记录一些难理解的。&lt;/p&gt;</description></item><item><title>从0开始制作游戏物理引擎（三）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%B8%89/</link><pubDate>Sat, 18 Jul 2026 01:12:56 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%B8%89/</guid><description>&lt;p&gt;这一章描述了各种几何体的最近点计算&lt;/p&gt;
&lt;p&gt;大部分的算法在公式大全&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;中都有详细推导。我只记录一些较难理解的。&lt;/p&gt;</description></item><item><title>从0开始制作游戏物理引擎（二）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%BA%8C/</link><pubDate>Fri, 17 Jul 2026 01:12:56 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%BA%8C/</guid><description>&lt;p&gt;这一章描述了各种几何体表示法，以及BV构建。&lt;/p&gt;</description></item><item><title>从0开始制作游戏物理引擎（一）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%B8%80/</link><pubDate>Thu, 16 Jul 2026 18:44:56 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E6%B8%B8%E6%88%8F%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E%E4%B8%80/</guid><description>&lt;p&gt;这一章描述了物理引擎的结构，并对整个系列文章的路线进行介绍&lt;/p&gt;</description></item><item><title>C++原子内存序和MESI</title><link>https://visualgmq.github.io/posts/c++%E5%8E%9F%E5%AD%90%E5%86%85%E5%AD%98%E5%BA%8F%E5%92%8Cmesi/</link><pubDate>Sun, 21 Jun 2026 18:44:56 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/c++%E5%8E%9F%E5%AD%90%E5%86%85%E5%AD%98%E5%BA%8F%E5%92%8Cmesi/</guid><description>&lt;p&gt;在使用C++ atomic原子变量的时候，需要指定内存序(memory order)，比如&lt;code&gt;memory_order_relaxed&lt;/code&gt;，&lt;code&gt;memory_order_acquire&lt;/code&gt;等。我一直没搞明白这些内存序是在做什么。这几天深入理解了一下于是写下这份文章。&lt;/p&gt;</description></item><item><title>PhysX CCT设计与缺陷</title><link>https://visualgmq.github.io/posts/physx-cct%E8%AE%BE%E8%AE%A1%E4%B8%8E%E7%BC%BA%E9%99%B7/</link><pubDate>Sat, 02 Aug 2025 17:26:12 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/physx-cct%E8%AE%BE%E8%AE%A1%E4%B8%8E%E7%BC%BA%E9%99%B7/</guid><description>&lt;p&gt;本文基于&lt;a href="https://github.com/NVIDIA-Omniverse/PhysX" target="_blank" rel="noreferrer"&gt;PhysX5.5.0&lt;/a&gt;源码分析（不过PhysX在这方面从4.0开始几乎没有什么改动）。讲述了&lt;a href="https://nvidia-omniverse.github.io/PhysX/physx/5.5.0/docs/CharacterControllers.html" target="_blank" rel="noreferrer"&gt;PhysX CharacterController&lt;/a&gt;的设计实现，以及其中存在的问题。&lt;/p&gt;
&lt;p&gt;注：PhysX的CCT实现非常简陋（如果不是工作原因不建议看源码，有这时间不如去看看UE或者Jolt这种物理引擎的实现），而且存在很多问题。我是因为工作原因才要学习，没办法。&lt;/p&gt;</description></item><item><title>【模板元编程和反射】：Ponder中的组织结构</title><link>https://visualgmq.github.io/posts/%E6%A8%A1%E6%9D%BF%E5%85%83%E7%BC%96%E7%A8%8B%E5%92%8C%E5%8F%8D%E5%B0%84ponder%E4%B8%AD%E7%9A%84%E7%BB%84%E7%BB%87%E7%BB%93%E6%9E%84/</link><pubDate>Sat, 11 Nov 2023 09:42:16 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E6%A8%A1%E6%9D%BF%E5%85%83%E7%BC%96%E7%A8%8B%E5%92%8C%E5%8F%8D%E5%B0%84ponder%E4%B8%AD%E7%9A%84%E7%BB%84%E7%BB%87%E7%BB%93%E6%9E%84/</guid><description>&lt;p&gt;本文述说了动态反射库&lt;a href="https://github.com/billyquith/ponder" target="_blank" rel="noreferrer"&gt;Ponder&lt;/a&gt;中的组织结构。&lt;/p&gt;</description></item><item><title>基于约束的物理求解</title><link>https://visualgmq.github.io/posts/%E5%9F%BA%E4%BA%8E%E7%BA%A6%E6%9D%9F%E7%9A%84%E7%89%A9%E7%90%86%E6%B1%82%E8%A7%A3/</link><pubDate>Fri, 27 Oct 2023 10:36:16 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%9F%BA%E4%BA%8E%E7%BA%A6%E6%9D%9F%E7%9A%84%E7%89%A9%E7%90%86%E6%B1%82%E8%A7%A3/</guid><description>&lt;p&gt;本文述说了基于约束的物理求解器，这是很多游戏物理引擎的核心。&lt;/p&gt;</description></item><item><title>【模板元编程和反射】（一）：type_list</title><link>https://visualgmq.github.io/posts/%E6%A8%A1%E6%9D%BF%E5%85%83%E7%BC%96%E7%A8%8B%E5%92%8C%E5%8F%8D%E5%B0%84%E4%B8%80type_list/</link><pubDate>Sat, 07 Oct 2023 09:42:16 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E6%A8%A1%E6%9D%BF%E5%85%83%E7%BC%96%E7%A8%8B%E5%92%8C%E5%8F%8D%E5%B0%84%E4%B8%80type_list/</guid><description>&lt;p&gt;本文述说了基于匹配的模板以及常见模板小工具&lt;code&gt;type_list&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;本章的&lt;code&gt;type_list&lt;/code&gt;实现代码在&lt;a href="https://github.com/VisualGMQ/mirrow" target="_blank" rel="noreferrer"&gt;mirrow&lt;/a&gt;的&lt;a href="https://github.com/VisualGMQ/mirrow/blob/main/include/mirrow/util/type_list.hpp" target="_blank" rel="noreferrer"&gt;type_list.hpp&lt;/a&gt;中。可自行参考。&lt;/p&gt;</description></item><item><title>EnTT源码分析【四】：storage</title><link>https://visualgmq.github.io/posts/entt%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E5%9B%9B/</link><pubDate>Thu, 24 Aug 2023 10:35:16 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/entt%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E5%9B%9B/</guid><description/></item><item><title>Raylib的BatchRendering</title><link>https://visualgmq.github.io/posts/raylib%E7%9A%84batchrendering/</link><pubDate>Sat, 12 Aug 2023 23:21:25 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/raylib%E7%9A%84batchrendering/</guid><description>&lt;p&gt;本文分析了&lt;a href="https://www.raylib.com/" target="_blank" rel="noreferrer"&gt;开源游戏框架Raylib&lt;/a&gt; v4.5.0中的batch rendering实现。&lt;/p&gt;</description></item><item><title>引用折叠和完美转发</title><link>https://visualgmq.github.io/posts/%E5%BC%95%E7%94%A8%E6%8A%98%E5%8F%A0%E5%92%8C%E5%AE%8C%E7%BE%8E%E8%BD%AC%E5%8F%91/</link><pubDate>Thu, 10 Aug 2023 21:24:40 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%BC%95%E7%94%A8%E6%8A%98%E5%8F%A0%E5%92%8C%E5%AE%8C%E7%BE%8E%E8%BD%AC%E5%8F%91/</guid><description/></item><item><title>EnTT源码分析【二】：Entity</title><link>https://visualgmq.github.io/posts/entt%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%BA%8C/</link><pubDate>Thu, 10 Aug 2023 10:35:16 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/entt%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%BA%8C/</guid><description/></item><item><title>EnTT源码分析【三】：sparse set</title><link>https://visualgmq.github.io/posts/entt%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B8%89/</link><pubDate>Thu, 10 Aug 2023 10:35:16 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/entt%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B8%89/</guid><description/></item><item><title>EnTT源码分析【一】：什么是ECS</title><link>https://visualgmq.github.io/posts/entt%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B8%80/</link><pubDate>Thu, 10 Aug 2023 09:42:16 +0800</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/entt%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B8%80/</guid><description/></item><item><title>关于逐渐迁移至B站的说明</title><link>https://visualgmq.github.io/posts/%E5%85%B3%E4%BA%8E%E9%80%90%E6%B8%90%E8%BF%81%E7%A7%BB%E8%87%B3b%E7%AB%99%E7%9A%84%E8%AF%B4%E6%98%8E/</link><pubDate>Wed, 01 Jun 2022 23:27:18 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%85%B3%E4%BA%8E%E9%80%90%E6%B8%90%E8%BF%81%E7%A7%BB%E8%87%B3b%E7%AB%99%E7%9A%84%E8%AF%B4%E6%98%8E/</guid><description/></item><item><title>USRefl源码分析</title><link>https://visualgmq.github.io/posts/usrefl%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/</link><pubDate>Wed, 13 Apr 2022 14:27:28 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/usrefl%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/</guid><description>&lt;p&gt;最近在看UE4中的反射机制，学了一些反射的使用方式，但并不知道其实现方式。这两天上知乎看到了Ubp.a大神写的99行静态反射，所以拿来分析一下源码。&lt;/p&gt;
&lt;p&gt;其知乎文章在&lt;a href="https://zhuanlan.zhihu.com/p/158147380" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>切线空间详解</title><link>https://visualgmq.github.io/posts/%E5%88%87%E7%BA%BF%E7%A9%BA%E9%97%B4%E8%AF%A6%E8%A7%A3/</link><pubDate>Wed, 16 Mar 2022 12:58:21 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%88%87%E7%BA%BF%E7%A9%BA%E9%97%B4%E8%AF%A6%E8%A7%A3/</guid><description>&lt;p&gt;本文解释了TBN矩阵的推导和在顶点着色器中对切线空间变换的推导。&lt;/p&gt;</description></item><item><title>3D空间中的旋转</title><link>https://visualgmq.github.io/posts/3d%E7%A9%BA%E9%97%B4%E4%B8%AD%E7%9A%84%E6%97%8B%E8%BD%AC/</link><pubDate>Fri, 11 Mar 2022 21:24:40 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/3d%E7%A9%BA%E9%97%B4%E4%B8%AD%E7%9A%84%E6%97%8B%E8%BD%AC/</guid><description>&lt;p&gt;本文描述了3D空间中的旋转，包括使用欧拉角旋转，四元数旋转，绕坐标轴轴旋转，绕旋转轴旋转以及四元数插值。&lt;/p&gt;</description></item><item><title>从0开始制作软渲染器（四）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E5%9B%9B/</link><pubDate>Wed, 09 Mar 2022 21:29:25 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E5%9B%9B/</guid><description>&lt;p&gt;本文说明了纹理映射。&lt;/p&gt;</description></item><item><title>从0开始制作软渲染器（三）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E4%B8%89/</link><pubDate>Tue, 08 Mar 2022 16:36:58 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E4%B8%89/</guid><description>&lt;p&gt;本文开始编写渲染器的代码。&lt;/p&gt;
&lt;p&gt;本着色器很大程度上参考了&lt;a href="https://github.com/skywind3000/RenderHelp" target="_blank" rel="noreferrer"&gt;韦易笑大神的RenderHelp渲染器&lt;/a&gt;。我的渲染器的理论是跟着&lt;a href="https://www.bilibili.com/video/BV1X7411F744?share_source=copy_web" target="_blank" rel="noreferrer"&gt;Games101&lt;/a&gt;和《Fundamentals of Computer Graphics, Fourth Edition》这本书来的，和韦大神渲染器中的方程不太一样（尤其是透视投影，深度测试的地方），所以如果要跟着我这系列博客学习，请务必从头看到尾，以避免公式和细节不一致的情况出现。&lt;/p&gt;
&lt;p&gt;最后的渲染器项目在&lt;a href="https://github.com/VisualGMQ/SoftRenderer" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;，gitee上也有同名镜像。&lt;/p&gt;</description></item><item><title>从0开始制作软渲染器（零）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E9%9B%B6/</link><pubDate>Sun, 06 Mar 2022 14:11:23 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E9%9B%B6/</guid><description>&lt;p&gt;本文介绍了基本的渲染管线知识。&lt;/p&gt;</description></item><item><title>从0开始制作软渲染器（二）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E4%BA%8C/</link><pubDate>Tue, 01 Mar 2022 22:33:19 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E4%BA%8C/</guid><description>&lt;p&gt;本文说了有关光栅化的事情&lt;/p&gt;</description></item><item><title>从0开始制作软渲染器（一）</title><link>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E4%B8%80/</link><pubDate>Tue, 01 Mar 2022 20:43:35 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E8%BD%AF%E6%B8%B2%E6%9F%93%E5%99%A8%E4%B8%80/</guid><description>&lt;p&gt;本文讲述了MVP矩阵的意义,投影变换（透视投影和平行投影）矩阵的推导以及视口变换&lt;/p&gt;</description></item><item><title>随机数生成算法</title><link>https://visualgmq.github.io/posts/%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E7%AE%97%E6%B3%95/</link><pubDate>Wed, 23 Feb 2022 18:13:19 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E7%AE%97%E6%B3%95/</guid><description>&lt;p&gt;这里介绍了一些随机数生成算法&lt;/p&gt;</description></item><item><title>SpaceWar制作感想</title><link>https://visualgmq.github.io/posts/spacewar%E5%88%B6%E4%BD%9C%E6%84%9F%E6%83%B3/</link><pubDate>Fri, 18 Feb 2022 22:28:14 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/spacewar%E5%88%B6%E4%BD%9C%E6%84%9F%E6%83%B3/</guid><description>&lt;p&gt;这里是SpaceWar游戏开发的一些感想。游戏视频可以在&lt;a href="https://visualgmq.github.io/projects/" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;看到&lt;/p&gt;</description></item><item><title>SDL2-使用OpenGL</title><link>https://visualgmq.github.io/posts/sdl2-%E4%BD%BF%E7%94%A8opengl/</link><pubDate>Sun, 23 Jan 2022 22:20:18 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E4%BD%BF%E7%94%A8opengl/</guid><description>&lt;p&gt;这里说明一下如何在SDL2中使用OpenGL。&lt;/p&gt;</description></item><item><title>C++对基本数据类型进行const T&amp;有意义吗</title><link>https://visualgmq.github.io/posts/c++-%E5%AF%B9%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E8%BF%9B%E8%A1%8Cconst-t%E6%9C%89%E6%84%8F%E4%B9%89%E5%90%97/</link><pubDate>Sun, 23 Jan 2022 15:47:42 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/c++-%E5%AF%B9%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E8%BF%9B%E8%A1%8Cconst-t%E6%9C%89%E6%84%8F%E4%B9%89%E5%90%97/</guid><description/></item><item><title>程序热加载原理</title><link>https://visualgmq.github.io/posts/%E7%A8%8B%E5%BA%8F%E7%83%AD%E5%8A%A0%E8%BD%BD%E5%8E%9F%E7%90%86/</link><pubDate>Mon, 10 Jan 2022 18:40:14 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E7%A8%8B%E5%BA%8F%E7%83%AD%E5%8A%A0%E8%BD%BD%E5%8E%9F%E7%90%86/</guid><description/></item><item><title>SDL播放/录制声音</title><link>https://visualgmq.github.io/posts/sdl%E6%92%AD%E6%94%BE%E5%A3%B0%E9%9F%B3/</link><pubDate>Fri, 26 Nov 2021 15:31:49 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl%E6%92%AD%E6%94%BE%E5%A3%B0%E9%9F%B3/</guid><description>&lt;p&gt;本文介绍了如何在不使用SDL_mixer的情况下，只使用SDL2进行声音的播放和录制。&lt;/p&gt;</description></item><item><title>在Android中嵌入SDL2</title><link>https://visualgmq.github.io/posts/%E5%9C%A8android%E4%B8%AD%E5%B5%8C%E5%85%A5sdl2/</link><pubDate>Fri, 19 Nov 2021 11:52:09 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%9C%A8android%E4%B8%AD%E5%B5%8C%E5%85%A5sdl2/</guid><description>&lt;p&gt;这里说一下如何将SDL编译为App。参考文档是SDL源码下的&lt;code&gt;docs/README-android.md&lt;/code&gt;。&lt;/p&gt;

&lt;h2 class="relative group"&gt;前期准备
 &lt;div id="前期准备" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e5%89%8d%e6%9c%9f%e5%87%86%e5%a4%87" aria-label="锚点"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;需要准备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;android sdk工具和ndk工具&lt;/li&gt;
&lt;li&gt;JDK8（更高的应该也可以）&lt;/li&gt;
&lt;li&gt;SDL2的源代码（这里使用的是SDL2_2.0.14版本）&lt;/li&gt;
&lt;li&gt;make，CMake（如果你用的Android Studio或者Gradle就不需要CMake和make）&lt;/li&gt;
&lt;li&gt;Gradle（最新版本就行，我这里是7.2）&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>shared_ptr aliasing constructor</title><link>https://visualgmq.github.io/posts/shared-ptr-aliasing-constructor/</link><pubDate>Fri, 08 Oct 2021 16:09:58 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/shared-ptr-aliasing-constructor/</guid><description>&lt;p&gt;本文简述了&lt;code&gt;shared_ptr aliasing constructor&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>在SDL中实现一个输入框</title><link>https://visualgmq.github.io/posts/%E5%9C%A8sdl%E4%B8%AD%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E8%BE%93%E5%85%A5%E6%A1%86/</link><pubDate>Tue, 21 Sep 2021 15:47:43 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%9C%A8sdl%E4%B8%AD%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E8%BE%93%E5%85%A5%E6%A1%86/</guid><description/></item><item><title>C++指向成员的指针</title><link>https://visualgmq.github.io/posts/c++%E6%8C%87%E5%90%91%E6%88%90%E5%91%98%E5%8F%98%E9%87%8F%E7%9A%84%E6%8C%87%E9%92%88/</link><pubDate>Sun, 12 Sep 2021 22:07:42 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/c++%E6%8C%87%E5%90%91%E6%88%90%E5%91%98%E5%8F%98%E9%87%8F%E7%9A%84%E6%8C%87%E9%92%88/</guid><description>&lt;p&gt;今天看《C++ Templates》中遇到的，一开始没看懂，就探究一下。&lt;br&gt;
参考&lt;a href="https://en.cppreference.com/w/cpp/language/pointer" target="_blank" rel="noreferrer"&gt;cppreference pointer&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Roguelike里的几种时间系统</title><link>https://visualgmq.github.io/posts/roguelike%E9%87%8C%E7%9A%84%E5%87%A0%E7%A7%8D%E6%97%B6%E9%97%B4%E7%B3%BB%E7%BB%9F/</link><pubDate>Sat, 14 Aug 2021 17:19:59 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/roguelike%E9%87%8C%E7%9A%84%E5%87%A0%E7%A7%8D%E6%97%B6%E9%97%B4%E7%B3%BB%E7%BB%9F/</guid><description/></item><item><title>何时使用智能指针</title><link>https://visualgmq.github.io/posts/%E4%BD%95%E6%97%B6%E4%BD%BF%E7%94%A8%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88/</link><pubDate>Tue, 10 Aug 2021 16:34:42 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BD%95%E6%97%B6%E4%BD%BF%E7%94%A8%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88/</guid><description/></item><item><title>将SDL程序变为网页（使用emscripten）</title><link>https://visualgmq.github.io/posts/%E5%B0%86sdl%E7%A8%8B%E5%BA%8F%E5%8F%98%E4%B8%BA%E7%BD%91%E9%A1%B5%E4%BD%BF%E7%94%A8emscripten/</link><pubDate>Mon, 02 Aug 2021 19:39:34 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%B0%86sdl%E7%A8%8B%E5%BA%8F%E5%8F%98%E4%B8%BA%E7%BD%91%E9%A1%B5%E4%BD%BF%E7%94%A8emscripten/</guid><description/></item><item><title>Text Warp (for UTF-8)</title><link>https://visualgmq.github.io/posts/text-warp-for-utf-8/</link><pubDate>Sun, 25 Jul 2021 16:37:28 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/text-warp-for-utf-8/</guid><description/></item><item><title>安装的一些Hexo插件（用法备忘）</title><link>https://visualgmq.github.io/posts/%E5%AE%89%E8%A3%85%E7%9A%84%E4%B8%80%E4%BA%9Bhexo%E6%8F%92%E4%BB%B6%E7%94%A8%E6%B3%95%E5%A4%87%E5%BF%98/</link><pubDate>Wed, 14 Jul 2021 21:42:42 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%AE%89%E8%A3%85%E7%9A%84%E4%B8%80%E4%BA%9Bhexo%E6%8F%92%E4%BB%B6%E7%94%A8%E6%B3%95%E5%A4%87%E5%BF%98/</guid><description/></item><item><title>Bresenham算法</title><link>https://visualgmq.github.io/posts/bresenham%E7%AE%97%E6%B3%95/</link><pubDate>Mon, 12 Jul 2021 16:43:49 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/bresenham%E7%AE%97%E6%B3%95/</guid><description/></item><item><title>XenEngine制作心得</title><link>https://visualgmq.github.io/posts/xenengine%E5%88%B6%E4%BD%9C%E5%BF%83%E5%BE%97/</link><pubDate>Sat, 22 May 2021 15:31:49 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/xenengine%E5%88%B6%E4%BD%9C%E5%BF%83%E5%BE%97/</guid><description/></item><item><title>利用xmacro的序列化和反序列化</title><link>https://visualgmq.github.io/posts/%E5%88%A9%E7%94%A8xmacro%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/</link><pubDate>Thu, 21 Jan 2021 20:25:33 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%88%A9%E7%94%A8xmacro%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/</guid><description>&lt;p&gt;本文介绍了如何使用宏自动创建序列化和反序列化函数的方法。&lt;/p&gt;</description></item><item><title>利用Lua做游戏脚本</title><link>https://visualgmq.github.io/posts/%E5%88%A9%E7%94%A8lua%E5%B5%8C%E5%85%A5%E5%BC%95%E6%93%8E%E5%81%9A%E6%B8%B8%E6%88%8F%E8%84%9A%E6%9C%AC/</link><pubDate>Thu, 14 Nov 2019 17:52:06 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%88%A9%E7%94%A8lua%E5%B5%8C%E5%85%A5%E5%BC%95%E6%93%8E%E5%81%9A%E6%B8%B8%E6%88%8F%E8%84%9A%E6%9C%AC/</guid><description>&lt;h1 class="relative group"&gt;关于脚本
 &lt;div id="关于脚本" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e5%85%b3%e4%ba%8e%e8%84%9a%e6%9c%ac" aria-label="锚点"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h1&gt;
&lt;p&gt;对于游戏脚本有两种解释，一般的解释是“外挂”，也就是自动刷怪等等的那种挂。一种是让脚本和游戏主体沟通，将逻辑单独拎出来的编程技术。我们这里说的不是外挂，说的是如何使用Lua语言做脚本，并且辅助我们自己的游戏主体的编程手段。&lt;/p&gt;

&lt;h1 class="relative group"&gt;预备知识
 &lt;div id="预备知识" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e9%a2%84%e5%a4%87%e7%9f%a5%e8%af%86" aria-label="锚点"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h1&gt;
&lt;p&gt;这个例子使用C++和SDL2制作游戏的主体，Lua作为游戏的脚本。另外需要知道Lua和C/C++互相通信的方法，见&lt;a href="https://www.cnblogs.com/RainRill/p/8361011.html" target="_blank" rel="noreferrer"&gt;这篇博客&lt;/a&gt;&lt;/p&gt;</description></item><item><title>好用的Unix命令行工具(持续更新)</title><link>https://visualgmq.github.io/posts/%E5%A5%BD%E7%94%A8%E7%9A%84unix%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7/</link><pubDate>Thu, 10 Oct 2019 22:47:09 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%A5%BD%E7%94%A8%E7%9A%84unix%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7/</guid><description>&lt;p&gt;这里记录了各种好用的Linux命令&lt;/p&gt;</description></item><item><title>使用纯SDL2库给OpenGL纹理</title><link>https://visualgmq.github.io/posts/%E4%BD%BF%E7%94%A8%E7%BA%AFsdl2%E5%BA%93%E7%BB%99opengl%E7%BA%B9%E7%90%86/</link><pubDate>Mon, 07 Oct 2019 10:59:39 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BD%BF%E7%94%A8%E7%BA%AFsdl2%E5%BA%93%E7%BB%99opengl%E7%BA%B9%E7%90%86/</guid><description>&lt;p&gt;在&lt;a href="https://learnopengl-cn.github.io/" target="_blank" rel="noreferrer"&gt;Learning-OpenGL&lt;/a&gt;的教程中，作者是使用stbi_image这个单头文件库来加载纹理的。当时我就在想：SDL2这么强大，自己应该也可以加载纹理数据的吧。所以就做了一些尝试。&lt;/p&gt;</description></item><item><title>从零开始制作一个基础的粒子系统</title><link>https://visualgmq.github.io/posts/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E4%B8%80%E4%B8%AA%E5%9F%BA%E7%A1%80%E7%B2%92%E5%AD%90%E7%B3%BB%E7%BB%9F/</link><pubDate>Thu, 03 Oct 2019 00:37:14 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%88%B6%E4%BD%9C%E4%B8%80%E4%B8%AA%E5%9F%BA%E7%A1%80%E7%B2%92%E5%AD%90%E7%B3%BB%E7%BB%9F/</guid><description>&lt;p&gt;这里我们来使用SDL2从零开始制作一个基础的粒子系统。&lt;/p&gt;</description></item><item><title>SDL2第三方库：SDL2_gfx</title><link>https://visualgmq.github.io/posts/sdl2-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93_sdl2_gfx/</link><pubDate>Sun, 22 Sep 2019 00:42:57 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93_sdl2_gfx/</guid><description>&lt;p&gt;这个库是非官方的第三方库，官网在&lt;a href="http://www.ferzkopp.net/wordpress/2016/01/02/sdl_gfx-sdl2_gfx/" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;。
在线API文档在&lt;a href="http://www.ferzkopp.net/Software/SDL2_gfx/Docs/html/index.html" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SDL2第三方库：SDL2_image库</title><link>https://visualgmq.github.io/posts/sdl2-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93_sdl2_image/</link><pubDate>Sun, 22 Sep 2019 00:42:57 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93_sdl2_image/</guid><description>&lt;p&gt;SDL2除了自己本身的SDL2库，官方和其他开发者为了补充相应的内容，给出了很多有用的库。这里就来看一下适用范围最广的SDL2_image库。&lt;/p&gt;
&lt;p&gt;所有的官方拓展库可以在&lt;a href="https://www.libsdl.org/projects/" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;找到。&lt;/p&gt;</description></item><item><title>SDL2第三方库：SDL2_ttf库和SDL_FontCache</title><link>https://visualgmq.github.io/posts/sdl2-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93_sdl2-ttf%E5%92%8Csdl_fontcache/</link><pubDate>Sun, 22 Sep 2019 00:42:57 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93_sdl2-ttf%E5%92%8Csdl_fontcache/</guid><description>&lt;p&gt;TTF库的文档在&lt;a href="https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf.pdf" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;。
FontCache库的github地址在&lt;a href="https://github.com/grimfang4/SDL_FontCache" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>C++和Lua的交互</title><link>https://visualgmq.github.io/posts/c++%E5%92%8Clua%E7%9A%84%E4%BA%A4%E4%BA%92/</link><pubDate>Sat, 31 Aug 2019 14:03:01 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/c++%E5%92%8Clua%E7%9A%84%E4%BA%A4%E4%BA%92/</guid><description>&lt;p&gt;Lua这个语言常常作为游戏引擎的游戏脚本，用于控制人物逻辑。一般Lua在游戏引擎中需要和其他语言进行沟通，而由于Lua是使用纯C写的语言，所以Lua当然也可以和C/C++沟通。&lt;/p&gt;</description></item><item><title>SDL2-Texture</title><link>https://visualgmq.github.io/posts/sdl-texture/</link><pubDate>Mon, 26 Aug 2019 10:25:20 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl-texture/</guid><description>&lt;p&gt;SDL2以来的，相对于SDL1的一大改变就是添加了&lt;code&gt;SDL_Renderer&lt;/code&gt;和&lt;code&gt;SDL_Texture&lt;/code&gt;，这两个结构体和对应的函数。这两个结构体用于进行软件加速以便于更快更好地绘制出图形，其使用方法也比&lt;code&gt;SDL_Surface&lt;/code&gt;要简单（至少不用底层修改像素来绘制几何图形了）。&lt;/p&gt;
&lt;p&gt;其实&lt;code&gt;SDL_Texture&lt;/code&gt;是基于&lt;code&gt;SDL_Surface&lt;/code&gt;的，有很多东西都很相似。SDL2较SDL1的优点就是，其&lt;code&gt;SDL_Texture&lt;/code&gt;是运行在GPU上的，SDL会视情况使用D3D或OpenGL，效率更高。&lt;/p&gt;</description></item><item><title>SDL2-Surface结构体详解</title><link>https://visualgmq.github.io/posts/sdl-surface%E7%BB%93%E6%9E%84%E4%BD%93%E8%AF%A6%E8%A7%A3/</link><pubDate>Fri, 23 Aug 2019 00:41:54 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl-surface%E7%BB%93%E6%9E%84%E4%BD%93%E8%AF%A6%E8%A7%A3/</guid><description>&lt;p&gt;&lt;code&gt;SDL_Surface&lt;/code&gt;是用于存储图像，可以用于图像绘制的结构体。
这里我们来看一下SDL2中的&lt;code&gt;SDL_Surface&lt;/code&gt;结构体和与其有关的函数操作。&lt;/p&gt;</description></item><item><title>SDL2-模态对话框</title><link>https://visualgmq.github.io/posts/sdl2-%E5%AF%B9%E8%AF%9D%E6%A1%86/</link><pubDate>Thu, 22 Aug 2019 22:42:57 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E5%AF%B9%E8%AF%9D%E6%A1%86/</guid><description>&lt;p&gt;SDL2中想要展示对话框有两种办法：使用&lt;code&gt;SDL_ShowSimpleMessageBox()&lt;/code&gt;来显示一个简单的对话框，或者使用&lt;code&gt;SDL_ShowMessageBox()&lt;/code&gt;来显示一个自定义对话框。
SDL2中只能展示模态对话框（就是如果你不点掉它你原本的窗体就不会有响应的对话框）。&lt;/p&gt;</description></item><item><title>透视投影矩阵的推导</title><link>https://visualgmq.github.io/posts/%E9%80%8F%E8%A7%86%E6%8A%95%E5%BD%B1%E7%9F%A9%E9%98%B5%E7%9A%84%E6%8E%A8%E5%AF%BC/</link><pubDate>Sat, 10 Aug 2019 15:31:49 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E9%80%8F%E8%A7%86%E6%8A%95%E5%BD%B1%E7%9F%A9%E9%98%B5%E7%9A%84%E6%8E%A8%E5%AF%BC/</guid><description>&lt;p&gt;在学习OpenGL的时候，或者在使用其他的3D引擎的时候总会遇到投影矩阵。这里就对投影矩阵进行推导
这里只推导透视投影，如果会了透视投影矩阵的推导平行投影矩阵其实也是一样的。&lt;/p&gt;</description></item><item><title>OpenAL笔记</title><link>https://visualgmq.github.io/posts/openal%E7%AC%94%E8%AE%B0/</link><pubDate>Tue, 30 Jul 2019 12:23:40 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/openal%E7%AC%94%E8%AE%B0/</guid><description/></item><item><title>第三方库是如何做到跨平台的</title><link>https://visualgmq.github.io/posts/%E5%90%84%E7%A7%8D%E5%BA%93%E6%98%AF%E5%A6%82%E4%BD%95%E5%81%9A%E5%88%B0%E8%B7%A8%E5%B9%B3%E5%8F%B0%E7%9A%84/</link><pubDate>Sun, 28 Jul 2019 16:01:01 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/%E5%90%84%E7%A7%8D%E5%BA%93%E6%98%AF%E5%A6%82%E4%BD%95%E5%81%9A%E5%88%B0%E8%B7%A8%E5%B9%B3%E5%8F%B0%E7%9A%84/</guid><description>&lt;p&gt;跨平台的库一直被视为减轻程序员工作负担的一大利器。那么这些程序是怎么样做到跨平台的呢。这里我分析了SDL2和Catch2的源码，发现了编写的方法。&lt;/p&gt;
&lt;p&gt;首先需要注意的是：&lt;strong&gt;以下说的方法都只在GUNC编译器下编译，其他编译器不知道能不能通过&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>SDL2-鼠标操作和光标生成</title><link>https://visualgmq.github.io/posts/sdl2-%E9%BC%A0%E6%A0%87%E6%93%8D%E4%BD%9C%E5%92%8C%E5%85%89%E6%A0%87%E7%94%9F%E6%88%90/</link><pubDate>Sun, 28 Jul 2019 00:48:28 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E9%BC%A0%E6%A0%87%E6%93%8D%E4%BD%9C%E5%92%8C%E5%85%89%E6%A0%87%E7%94%9F%E6%88%90/</guid><description>&lt;h3 class="relative group"&gt;鼠标和光标操作
 &lt;div id="鼠标和光标操作" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e9%bc%a0%e6%a0%87%e5%92%8c%e5%85%89%e6%a0%87%e6%93%8d%e4%bd%9c" aria-label="锚点"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;SDL2里面专门有SDL_mouse.h头文件给出了鼠标和光标的操作。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;关于光标的操作&lt;/strong&gt;
SDL2里面提供了很多关于光标的操作，包括创建光标，显示光标等。&lt;/p&gt;</description></item><item><title>SDL2-事件</title><link>https://visualgmq.github.io/posts/sdl2-%E4%BA%8B%E4%BB%B6/</link><pubDate>Sun, 28 Jul 2019 00:47:10 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E4%BA%8B%E4%BB%B6/</guid><description>&lt;p&gt;窗体是通过事件驱动的。掌握了事件就可以掌握窗体等的行动。SDL2的事件结构体为SDL_Event.&lt;/p&gt;</description></item><item><title>SDL2-Rect和Point</title><link>https://visualgmq.github.io/posts/sdl2-rect%E5%92%8Cpoint/</link><pubDate>Sun, 28 Jul 2019 00:45:26 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-rect%E5%92%8Cpoint/</guid><description>&lt;p&gt;SDL_Rect和SDL_Point都是SDL中用于表示几何图像的基本元素。让我们来深入了解一下这两个结构体吧。&lt;/p&gt;</description></item><item><title>SDL2-多窗口</title><link>https://visualgmq.github.io/posts/sdl2-%E5%A4%9A%E7%AA%97%E5%8F%A3/</link><pubDate>Sun, 28 Jul 2019 00:44:56 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E5%A4%9A%E7%AA%97%E5%8F%A3/</guid><description>&lt;p&gt;SDL不仅是用来写游戏的，其实他的官方网站给他的定义是游戏和GUI界面，也就是说它其实就是一个实现图形用户界面的库。那么肯定可以有多窗口啦。
其实多窗口实现的方式很简单：你只要定义多个窗口，然后每个窗口再给一个Renderer就可以了。然后在循环的时候再调用各自的Renderer函数就可以了。&lt;/p&gt;</description></item><item><title>SDL2-时间控制</title><link>https://visualgmq.github.io/posts/sdl2-%E6%97%B6%E9%97%B4%E6%8E%A7%E5%88%B6/</link><pubDate>Sun, 28 Jul 2019 00:44:22 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E6%97%B6%E9%97%B4%E6%8E%A7%E5%88%B6/</guid><description>&lt;p&gt;时间控制函数在SDL_timer.h中&lt;/p&gt;</description></item><item><title>SDL2-平台检测和CPU信息</title><link>https://visualgmq.github.io/posts/sdl2-%E5%B9%B3%E5%8F%B0%E6%A3%80%E6%B5%8B%E5%92%8Ccpu%E4%BF%A1%E6%81%AF/</link><pubDate>Sun, 28 Jul 2019 00:43:39 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E5%B9%B3%E5%8F%B0%E6%A3%80%E6%B5%8B%E5%92%8Ccpu%E4%BF%A1%E6%81%AF/</guid><description/></item><item><title>SDL2-电量信息获取</title><link>https://visualgmq.github.io/posts/sdl2-%E7%94%B5%E9%87%8F%E4%BF%A1%E6%81%AF%E8%8E%B7%E5%8F%96/</link><pubDate>Sun, 28 Jul 2019 00:42:57 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E7%94%B5%E9%87%8F%E4%BF%A1%E6%81%AF%E8%8E%B7%E5%8F%96/</guid><description/></item><item><title>SDL2-按键操作</title><link>https://visualgmq.github.io/posts/sdl2-%E6%8C%89%E9%94%AE%E6%93%8D%E4%BD%9C/</link><pubDate>Sun, 28 Jul 2019 00:41:54 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E6%8C%89%E9%94%AE%E6%93%8D%E4%BD%9C/</guid><description>&lt;p&gt;除了事件里面可以处理按键，SDL2还专门提供了SDL_keyboard.h, SDL_keycode.h, SDL_scancode.h三个文件来对按键进行操作。&lt;/p&gt;</description></item><item><title>SDL2-文本输入操作</title><link>https://visualgmq.github.io/posts/sdl2-%E6%96%87%E6%9C%AC%E8%BE%93%E5%85%A5%E6%93%8D%E4%BD%9C/</link><pubDate>Sun, 28 Jul 2019 00:41:17 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E6%96%87%E6%9C%AC%E8%BE%93%E5%85%A5%E6%93%8D%E4%BD%9C/</guid><description>&lt;p&gt;对于SDL的文本输入操作，其wiki还专门给了一个教程：&lt;a href="http://wiki.libsdl.org/Tutorials/TextInput" target="_blank" rel="noreferrer"&gt;见这里&lt;/a&gt;
我们按照这个教程来简单说明一下。&lt;/p&gt;</description></item><item><title>SDL2-绘制文本</title><link>https://visualgmq.github.io/posts/sdl2-%E7%BB%98%E5%88%B6%E6%96%87%E6%9C%AC/</link><pubDate>Sun, 28 Jul 2019 00:40:18 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E7%BB%98%E5%88%B6%E6%96%87%E6%9C%AC/</guid><description>&lt;p&gt;SDL本身是不支持文本的绘制的，如果你想要绘制文本的话你需要包含其第三方库&lt;code&gt;SDL_ttf&lt;/code&gt;，下载网址在&lt;a href="https://www.libsdl.org/projects/SDL_ttf/" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;
顺带一提，SDL官方的所有拓展库都可以在&lt;a href="https://www.libsdl.org/projects/" target="_blank" rel="noreferrer"&gt;这里&lt;/a&gt;找到，这个网址同时还有很多很多的学习资源（包括第一版DOOM的源代码）&lt;/p&gt;</description></item><item><title>SDL2-版本获取</title><link>https://visualgmq.github.io/posts/sdl2-%E7%89%88%E6%9C%AC%E8%8E%B7%E5%8F%96/</link><pubDate>Sun, 28 Jul 2019 00:39:22 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E7%89%88%E6%9C%AC%E8%8E%B7%E5%8F%96/</guid><description/></item><item><title>SDL2-日志</title><link>https://visualgmq.github.io/posts/sdl2-%E6%97%A5%E5%BF%97/</link><pubDate>Sun, 28 Jul 2019 00:38:24 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E6%97%A5%E5%BF%97/</guid><description/></item><item><title>SDL2-错误检测和处理</title><link>https://visualgmq.github.io/posts/sdl2-%E9%94%99%E8%AF%AF%E6%A3%80%E6%B5%8B%E5%92%8C%E5%A4%84%E7%90%86/</link><pubDate>Sun, 28 Jul 2019 00:37:14 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E9%94%99%E8%AF%AF%E6%A3%80%E6%B5%8B%E5%92%8C%E5%A4%84%E7%90%86/</guid><description/></item><item><title>SDL2-剪切板</title><link>https://visualgmq.github.io/posts/sdl2-%E5%89%AA%E5%88%87%E6%9D%BF/</link><pubDate>Sun, 28 Jul 2019 00:36:29 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E5%89%AA%E5%88%87%E6%9D%BF/</guid><description/></item><item><title>SDL2-多线程</title><link>https://visualgmq.github.io/posts/sdl2-%E5%A4%9A%E7%BA%BF%E7%A8%8B/</link><pubDate>Sun, 28 Jul 2019 00:35:25 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E5%A4%9A%E7%BA%BF%E7%A8%8B/</guid><description/></item><item><title>SDL2-渲染器SDL_Renderer</title><link>https://visualgmq.github.io/posts/sdl2-%E6%B8%B2%E6%9F%93%E5%99%A8sdl_renderer/</link><pubDate>Sun, 28 Jul 2019 00:32:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E6%B8%B2%E6%9F%93%E5%99%A8sdl_renderer/</guid><description>&lt;h3 class="relative group"&gt;SDL2渲染器
 &lt;div id="sdl2渲染器" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#sdl2%e6%b8%b2%e6%9f%93%e5%99%a8" aria-label="锚点"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;有了窗口之后，我们还需要有一个渲染器。渲染器用于将图像渲染到窗口上。&lt;/p&gt;</description></item><item><title>SDL2-HelloWorld</title><link>https://visualgmq.github.io/posts/sdl2-helloworld/</link><pubDate>Sun, 28 Jul 2019 00:12:31 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-helloworld/</guid><description>&lt;p&gt;这里我们先来一个Hello World来看看什么是SDL。这一部分可能比较多。&lt;/p&gt;</description></item><item><title>SDL2-初始化</title><link>https://visualgmq.github.io/posts/sdl2-%E5%88%9D%E5%A7%8B%E5%8C%96/</link><pubDate>Sun, 28 Jul 2019 00:11:29 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E5%88%9D%E5%A7%8B%E5%8C%96/</guid><description>&lt;p&gt;初始化并非只有&lt;code&gt;SDL_Init&lt;/code&gt;一个函数。让我们来看看还有其他什么函数&lt;/p&gt;</description></item><item><title>SDL2-创建窗口</title><link>https://visualgmq.github.io/posts/sdl2-%E5%88%9B%E5%BB%BA%E7%AA%97%E5%8F%A3/</link><pubDate>Sun, 28 Jul 2019 00:07:17 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2-%E5%88%9B%E5%BB%BA%E7%AA%97%E5%8F%A3/</guid><description>&lt;p&gt;一个游戏，如果想要开始的话，必须得先有一个窗口。这里我们先来创造一个窗口。&lt;/p&gt;</description></item><item><title>SDL2是个啥</title><link>https://visualgmq.github.io/posts/sdl2%E6%98%AF%E4%B8%AA%E5%95%A5/</link><pubDate>Sat, 27 Jul 2019 23:51:30 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/sdl2%E6%98%AF%E4%B8%AA%E5%95%A5/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/helloworld/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/helloworld/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/introduce/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/introduce/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/summary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/summary/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E4%BD%BF%E7%94%A8%E5%86%85%E9%83%A8api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E4%BD%BF%E7%94%A8%E5%86%85%E9%83%A8api/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E7%BB%91%E5%AE%9A%E5%85%A8%E5%B1%80%E5%87%BD%E6%95%B0/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E7%BB%91%E5%AE%9A%E5%85%A8%E5%B1%80%E5%87%BD%E6%95%B0/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E7%BB%91%E5%AE%9A%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E7%BB%91%E5%AE%9A%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E7%BB%91%E5%AE%9A%E6%A8%A1%E5%9D%97/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E7%BB%91%E5%AE%9A%E6%A8%A1%E5%9D%97/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E7%BB%91%E5%AE%9A%E7%B1%BB/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E7%BB%91%E5%AE%9A%E7%B1%BB/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E8%AE%A9%E6%88%91%E4%BB%AC%E5%BC%80%E5%A7%8B%E7%BB%91%E5%AE%9A/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E8%AE%A9%E6%88%91%E4%BB%AC%E5%BC%80%E5%A7%8B%E7%BB%91%E5%AE%9A/</guid><description/></item><item><title/><link>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E8%AE%BE%E7%BD%AE%E5%AF%B9%E8%B1%A1%E5%B1%9E%E6%80%A7%E7%9A%84%E6%96%B9%E6%B3%95/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/books/quickjs-binding-tutorial/src/%E8%AE%BE%E7%BD%AE%E5%AF%B9%E8%B1%A1%E5%B1%9E%E6%80%A7%E7%9A%84%E6%96%B9%E6%B3%95/</guid><description/></item><item><title/><link>https://visualgmq.github.io/posts/bvh%E4%B8%AD%E4%BD%8D%E6%95%B0%E6%9E%84%E5%BB%BA%E6%80%A7%E8%83%BD/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>visualgmq@outlook.com (VisualGMQ)</author><guid>https://visualgmq.github.io/posts/bvh%E4%B8%AD%E4%BD%8D%E6%95%B0%E6%9E%84%E5%BB%BA%E6%80%A7%E8%83%BD/</guid><description/></item></channel></rss>