<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ht_vIC的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ht_vIC</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ht_vIC]]></copyright><item><title><![CDATA[boost.asio网络学习：Http Server]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/159215443</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/159215443</guid><author>ht_vIC</author><pubDate>Wed, 18 Mar 2026 23:16:59 +0800</pubDate><description><![CDATA[摘要：本项目实现了一个基于Boost.Asio和Boost.Beast的最小HTTP服务器，核心功能包括监听端口、解析HTTP请求、路由处理和异步响应。服务器采用分层架构：main函数初始化事件循环和监听器；Listener负责接受新连接并为每个连接创建HttpSession；HttpSession处理请求的读取和响应写入；Router根据请求方法和路径生成相应响应。项目演示了HTTP协议的基本处理流程，包括请求解析、路由分发和响应构建，为理解异步HTTP服务器实现提供了简洁范例。]]></description><category></category></item><item><title><![CDATA[asio::ip::tcp学习]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/159079516</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/159079516</guid><author>ht_vIC</author><pubDate>Sun, 15 Mar 2026 11:28:34 +0800</pubDate><description><![CDATA[摘要 Boost.Asio的TCP网络编程核心组件包括： tcp::socket：表示已建立的TCP连接端点，管理连接生命周期和I/O操作。需注意异步操作的生命周期管理，推荐使用shared_ptr保活会话对象。 tcp::acceptor：监听器组件，负责绑定端口、监听和接受新连接。必须实现accept循环才能持续接收多个连接。 连接管理：提供同步/异步读写接口，支持半关闭(shutdown)操作。客户端使用resolver进行DNS解析获取endpoint。 常见问题：包括忘记accept循环、并发写冲]]></description><category></category></item><item><title><![CDATA[Asio基础]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/159079193</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/159079193</guid><author>ht_vIC</author><pubDate>Sun, 15 Mar 2026 11:05:22 +0800</pubDate><description><![CDATA[摘要：本文介绍了Boost.Asio库的核心组件及其使用要点。主要内容包括：1) io_context作为事件循环和调度器的核心功能；2) steady_timer定时器的使用场景和注意事项；3) strand串行执行器解决多线程并发问题；4) enable_shared_from_this管理异步对象生命周期；5) async_read_some与async_read的区别；6) 错误码处理模型；7) TCP写队列的最佳实践。文章重点阐述了这些组件在多线程环境下的正确使用方式，以及常见的错误处理模式。]]></description><category></category></item><item><title><![CDATA[Asio学习：定时器]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/159054135</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/159054135</guid><author>ht_vIC</author><pubDate>Sat, 14 Mar 2026 21:54:53 +0800</pubDate><description><![CDATA[摘要 本文介绍了基于asio库的异步定时器实现方案。通过封装Ticker类，利用strand保证回调串行化，避免多线程环境下的数据竞争。关键点包括：使用shared_from_this管理对象生命周期；通过work_guard保持事件循环运行；采用&quot;expires_after+async_wait&quot;的异步调度模式。线程池模型支持并发执行，而strand确保同一对象的回调有序执行。文章提供了完整的代码框架和并发控制方案，适用于需要精确时间控制的异步应用场景。]]></description><category></category></item><item><title><![CDATA[光照学习：法线矩阵]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/157978036</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/157978036</guid><author>ht_vIC</author><pubDate>Wed, 11 Feb 2026 18:19:00 +0800</pubDate><description><![CDATA[，缩放会把法线方向“拉歪”，导致缩放后的法线不再与缩放后的切线（Tangent）保持垂直，从而光照计算出现明显错误（明暗边界不对、高光跑偏）。在进行非等比缩放的时候，会出现图中的问题：如果仍然用和位置一样的矩阵去变换法线（比如直接用。]]></description><category></category></item><item><title><![CDATA[光照模型：Gouraud模型]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/157946443</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/157946443</guid><author>ht_vIC</author><pubDate>Tue, 10 Feb 2026 22:20:40 +0800</pubDate><description><![CDATA[Gouraud Shading（高洛德着色）= “逐顶点算光照，逐像素做插值上色”。它不是一个新的光照模型（不改变 Phong/Blinn-Phong 的公式），这两种光照模型的不同就是在不同的阶段计算光照。Gouraud 的“贵”变“便宜”——把很多次的片元光照计算，变成少量的顶点光照计算。： 以一个三角形为例，顶点为。]]></description><category></category></item><item><title><![CDATA[光照模型：Phong模型]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/157946114</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/157946114</guid><author>ht_vIC</author><pubDate>Tue, 10 Feb 2026 21:57:28 +0800</pubDate><description><![CDATA[PNPLightPosPViewPosI-LPhong 模型把最终颜色/亮度写成：(1) 环境光 Ambient（不考虑方向，给整体一个底色）vec3Ia(2) 漫反射 Diffuse（Lambert），取决于入射角（图中箭头与法线夹角）Il(3) 镜面反射 Specular（Phong 高光），取决于观察方向与反射方向的接近程度shininess常见细节：当I_diffuseI_specularatten330。]]></description><category></category></item><item><title><![CDATA[学习四元数]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/157910753</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/157910753</guid><author>ht_vIC</author><pubDate>Mon, 09 Feb 2026 20:36:14 +0800</pubDate><description><![CDATA[四元数的核心价值：把旋转当成一个整体来累计，不会出现万向节死锁，并且叠加旋转非常自然。欧拉角是三个旋转轴，四元数可以当作是一个旋转轴，这个旋转轴每次都是在变化的。]]></description><category></category></item><item><title><![CDATA[Agent学习：调用LLM]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/157069281</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/157069281</guid><author>ht_vIC</author><pubDate>Sat, 17 Jan 2026 22:04:16 +0800</pubDate><description><![CDATA[env。]]></description><category></category></item><item><title><![CDATA[Qt：QPainter坐标系统和坐标转换]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/156658173</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/156658173</guid><author>ht_vIC</author><pubDate>Tue, 06 Jan 2026 22:26:24 +0800</pubDate><description><![CDATA[注意：变换的是坐标系统。]]></description><category></category></item><item><title><![CDATA[Qt：容器类的迭代]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/156315191</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/156315191</guid><author>ht_vIC</author><pubDate>Fri, 26 Dec 2025 22:26:45 +0800</pubDate><description><![CDATA[QList<T>QMap和QHash等关联容器的迭代器用法相同，QList和QLinkedList、QSet等容器类的用法相同。]]></description><category></category></item><item><title><![CDATA[Qt：容器类]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/156279356</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/156279356</guid><author>ht_vIC</author><pubDate>Thu, 25 Dec 2025 22:16:28 +0800</pubDate><description><![CDATA[容器类是基于模板的类，可以是简单类型，也可以是QStirng、QDate等类，但不能是QObject或任何其子类。T必须是一个可赋值的类型，即T必须提供一个缺省的构造函数，一个可赋值构造函数和一个赋值运算符。Qt的容器分类：顺序容器（sequential containers）和关联容器（associative containers）]]></description><category></category></item><item><title><![CDATA[Qt：信号与槽]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/156242471</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/156242471</guid><author>ht_vIC</author><pubDate>Wed, 24 Dec 2025 22:03:00 +0800</pubDate><description><![CDATA[Q_OBJECTprivate:public:signals:// 自定义信号++m_age;// 发射信号。]]></description><category></category></item><item><title><![CDATA[vscode编译通过，头文件爆红]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/155187889</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/155187889</guid><author>ht_vIC</author><pubDate>Mon, 24 Nov 2025 09:49:57 +0800</pubDate><description><![CDATA[同时添加外部添加的库的头文件目录到。文件，在这里配置头文件。复制后面给出的路径到。]]></description><category></category></item><item><title><![CDATA[OpenGL：PCF柔和阴影]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/155168643</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/155168643</guid><author>ht_vIC</author><pubDate>Sun, 23 Nov 2025 21:44:05 +0800</pubDate><description><![CDATA[本文探讨了阴影渲染中出现的锯齿问题及其解决方法。阴影锯齿主要源于深度贴图分辨率限制，导致多个片段采样相同深度值。解决方案包括：1）提高深度贴图分辨率；2）优化光源视锥；3）使用PCF（百分比渐进滤波）技术。PCF通过多次采样深度贴图并混合结果来生成柔和阴影。文章展示了不同采样密度的PCF效果对比，从3×3采样（9次）到8×8采样（64次），采样次数越多阴影越柔和。文末提供了GLSL代码实现，演示了如何通过纹理采样和混合计算来改善阴影质量。]]></description><category></category></item><item><title><![CDATA[OpenGL：阴影过采样]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/155168613</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/155168613</guid><author>ht_vIC</author><pubDate>Sun, 23 Nov 2025 21:39:03 +0800</pubDate><description><![CDATA[现在如果我们采样深度贴图[0,1]范围以外的区域，纹理函数总会返回一个1.0的深度值，由此得到的阴影值始终为0.0。但是图中还是有一部分是阴影区域，这是因为那部分区域的坐标超出的光的视锥的远平面。这是因为当投影坐标超出光的视锥范围时，其值会比1.0大，此时采样的深度纹理就会超出他默认的范围[0,1]。根据纹理环绕方式，我们将会得到不正确的深度结果，它不是基于真实的来自光源的深度值。我们希望超出深度范围的坐标，深度值为1.0，这样超出的坐标将永远不在阴影之中（深度值最大为1.0）。]]></description><category></category></item><item><title><![CDATA[OpenGL：阴影失真与阴影悬浮]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/155168088</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/155168088</guid><author>ht_vIC</author><pubDate>Sun, 23 Nov 2025 21:01:57 +0800</pubDate><description><![CDATA[本文分析了阴影渲染中的失真问题（Shadow Acne）及其解决方案。阴影失真主要由深度纹理精度不足导致，表现为摩尔纹和闪烁现象。解决方法包括引入阴影偏移（shadow bias）技术，通过添加深度偏差值来减少误判。进一步优化提出了根据光线与表面角度动态调整偏移量的方法。然而过大的偏移会导致阴影悬浮问题，表现为阴影偏离实际物体。最终解决方案是在生成深度贴图时启用正面剔除，增大记录的深度值，从而避免误判。文章通过图示和代码示例详细说明了问题成因及解决步骤。]]></description><category></category></item><item><title><![CDATA[OpenGL：坐标系]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/155110894</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/155110894</guid><author>ht_vIC</author><pubDate>Fri, 21 Nov 2025 21:18:48 +0800</pubDate><description><![CDATA[顶点数据的原始坐标值（比如.obj文件里定义的顶点），是基于模型原点定义的。]]></description><category></category></item><item><title><![CDATA[OpenGL：几何着色器]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/155076990</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/155076990</guid><author>ht_vIC</author><pubDate>Thu, 20 Nov 2025 22:05:52 +0800</pubDate><description><![CDATA[几何着色器是一种可编程着色器，用于处理输入的图元（点、线或三角形），可以修改、转换或生成新的图元。它通过声明输入/输出图元类型和最大顶点数来控制处理流程，支持输出不同类型或数量的图元。文中以可视化法线为例，展示了从顶点着色器传递法线数据，在几何着色器中生成法线向量线，最后通过片段着色器着色的完整流程。这种技术可以用于调试或增强渲染效果，通过两次绘制（主场景和法线）实现可视化。几何着色器提供了灵活的图元处理能力，扩展了图形渲染的可能性。]]></description><category></category></item><item><title><![CDATA[OpenGL：Normal Mapping]]></title><link>https://blog.youkuaiyun.com/ht_vIC/article/details/155075172</link><guid>https://blog.youkuaiyun.com/ht_vIC/article/details/155075172</guid><author>ht_vIC</author><pubDate>Thu, 20 Nov 2025 20:15:23 +0800</pubDate><description><![CDATA[法线贴图是一种 “存储表面法线信息” 的纹理贴图，用 RGB 颜色值编码法线方向，让低多边形（低模）模型呈现高多边形（高模）的凹凸细节。原理贴图的 RGB 通道对应法线的 X、Y、Z 轴方向（默认蓝色通道 Z 值占比高，所以法线贴图多呈蓝紫色）。不需要增加模型面数，仅通过修改法线方向，就能模拟出划痕、褶皱、纹路等细节，大幅提升渲染效率。法线贴图通常会呈现蓝紫色，因为法线贴图中的法线通常是从XY平面出发，指向+Z方向的。在贴图中的RGB分量分别对应法线的XYZ分量。]]></description><category></category></item></channel></rss>