﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-永远也不完美的程序</title><link>http://www.cppblog.com/liangairan/</link><description>不断学习，不断实践，不断的重构……</description><language>zh-cn</language><lastBuildDate>Mon, 06 Apr 2026 19:55:22 GMT</lastBuildDate><pubDate>Mon, 06 Apr 2026 19:55:22 GMT</pubDate><ttl>60</ttl><item><title>FreeType使用的总结</title><link>http://www.cppblog.com/liangairan/archive/2016/09/11/214270.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Sun, 11 Sep 2016 09:14:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2016/09/11/214270.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/214270.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2016/09/11/214270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/214270.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/214270.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这里说一下Freetype的关键点，比较基础的在很多文章已经有说明，这里就不详细说明了。<br>FreeType每个字符的加载，可以影响到后面对字符图像的处理。&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2016/09/11/214270.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/214270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2016-09-11 17:14 <a href="http://www.cppblog.com/liangairan/archive/2016/09/11/214270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正确理解shadowmap的实现方式</title><link>http://www.cppblog.com/liangairan/archive/2015/06/10/210873.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Wed, 10 Jun 2015 12:44:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2015/06/10/210873.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/210873.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2015/06/10/210873.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/210873.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/210873.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先确定阴影的最基本原理：<br>阴影是以光源作为摄像机（叫作Camera_light），光照方向作为摄像机的look的方向，然后把这个摄像机看到的场景物渲染到纹理，这个纹理就叫shadowmap。&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2015/06/10/210873.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/210873.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2015-06-10 20:44 <a href="http://www.cppblog.com/liangairan/archive/2015/06/10/210873.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gles2开发中遇到的问题及解决方法</title><link>http://www.cppblog.com/liangairan/archive/2014/02/20/205871.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Thu, 20 Feb 2014 11:33:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2014/02/20/205871.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/205871.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2014/02/20/205871.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/205871.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/205871.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.纹理<br>在gles2中，纹理在glsl中定义的顺序，并不是按先后顺序来排列的。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2014/02/20/205871.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/205871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2014-02-20 19:33 <a href="http://www.cppblog.com/liangairan/archive/2014/02/20/205871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2012－2013年AIREngine开发总结及未来展望</title><link>http://www.cppblog.com/liangairan/archive/2014/02/01/205613.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Sat, 01 Feb 2014 10:29:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2014/02/01/205613.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/205613.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2014/02/01/205613.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/205613.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/205613.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2012－2013年AIREngine开发总结及未来展望&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2014/02/01/205613.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/205613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2014-02-01 18:29 <a href="http://www.cppblog.com/liangairan/archive/2014/02/01/205613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>游戏中各种特效的实现方法。</title><link>http://www.cppblog.com/liangairan/archive/2013/08/17/198750.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Sat, 17 Aug 2013 05:22:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2013/08/17/198750.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/198750.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2013/08/17/198750.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/198750.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/198750.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这里说的是一些常规的人没考虑到的效果。<br><br>1、精确拾取的实现<br>一般普通的拾取就是AABB，再是OBB，或者是遍历一个模型的面。这三种方式都有缺陷。&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2013/08/17/198750.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/198750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2013-08-17 13:22 <a href="http://www.cppblog.com/liangairan/archive/2013/08/17/198750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>游戏中各种性能优化方法（不断更新）</title><link>http://www.cppblog.com/liangairan/archive/2013/03/23/198749.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Sat, 23 Mar 2013 08:29:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2013/03/23/198749.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/198749.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2013/03/23/198749.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/198749.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/198749.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 谈到游戏中的性能优化，说白了就是如何提高帧率和降低内存。<br>提高帧率的基本原则就是减少DP次数，还有是找出时间消耗高的程序代码加以修改。&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2013/03/23/198749.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/198749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2013-03-23 16:29 <a href="http://www.cppblog.com/liangairan/archive/2013/03/23/198749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>游戏渲染窗口下实现内嵌网页</title><link>http://www.cppblog.com/liangairan/archive/2013/01/24/197510.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Thu, 24 Jan 2013 11:22:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2013/01/24/197510.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/197510.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2013/01/24/197510.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/197510.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/197510.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 现在游戏的UI五花八门，什么需求都有，特别是涉及到充值那块，对内嵌网页要求就更多。<br>那么怎么实现一个UI里的内嵌网页呢？这个网页还要跟着这个UI移动。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2013/01/24/197510.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/197510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2013-01-24 19:22 <a href="http://www.cppblog.com/liangairan/archive/2013/01/24/197510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为适应dx11，airengine所作出的修改。</title><link>http://www.cppblog.com/liangairan/archive/2012/10/03/192690.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Wed, 03 Oct 2012 00:19:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2012/10/03/192690.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/192690.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2012/10/03/192690.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/192690.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/192690.html</trackback:ping><description><![CDATA[<div>1、渲染状态归类封装</div>
<div>DX9下的渲染状态比较乱，不像DX11那样把渲染状态归为几类。按DX11的归类，同样也适应DX9的API。</div>
<div></div>
<div>2、VertexDeclaration从VertexBuffer里改成封装在VertexShader里。</div>
<div>这里要说明一下，VertexDeclaration封装在VertexBuffer里本来就是不太合理的，因为VertexBuffer就是一个Buffer，实际上和顶点格式关系不太大。而且，dx11中的inputlayout的创建还依赖于shader的创建代码，因此，必须要把vertexdeclaration移到vertexshader里。而这种做法会引起DX9的一个问题，下面会说明到。</div>
<div></div>
<div>3、引擎所有渲染都用上shader，全面抛弃固定管线。</div>
<div>正如上面说到，如果vertexdecalaration的创建要依赖于shader，那么固定管线下就不能再自己创建vc（vertexdeclaration）了，而考虑到引擎要支持双渲染器，所以有些操作要统一，就不保留固定管线了。</div>
<div></div>
<div>4、GPU参数设置的调整</div>
<div>之前GPU的参数更新封装在一个类GPUParameter里，主要是负责GPU参数的值的设置，但随着DX11的加入，这里问题就出来了。DX9下面，没有constantbuffer的概念，只有一个一个参数设置到寄存器，而原来引擎的设计就是针对DX9的这套机制来实现的。所以，现在引擎作出调整，在dx9渲染系统下建一个类D3D9GPUParameters继承自GPUParameter，DX9下如何设置参数在这个类下实现。<br />5、RenderTarget的接口改变<br />DX11下是把所有RenderTarget放到一个数组中然后设置进去的，而DX9是一个一个设置进去，所以当要实现multirendertarget的时候，如果引擎要适应两种渲染器，那只能用DX11的设置方法了。</div><img src ="http://www.cppblog.com/liangairan/aggbug/192690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2012-10-03 08:19 <a href="http://www.cppblog.com/liangairan/archive/2012/10/03/192690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于VertexDeclaration的设计改进。</title><link>http://www.cppblog.com/liangairan/archive/2012/07/18/184133.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Wed, 18 Jul 2012 14:40:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2012/07/18/184133.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/184133.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2012/07/18/184133.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/184133.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/184133.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: vertexdeclaration在引擎中，原来是直接放在vertexbuffer里面，当设置这个vertexbuffer的时候再设这个declaration，在DX9中看似没问题，因为每个vertexbuffer都有自己的顶点格式。&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2012/07/18/184133.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/184133.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2012-07-18 22:40 <a href="http://www.cppblog.com/liangairan/archive/2012/07/18/184133.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>引擎关于插件模式开发的思考</title><link>http://www.cppblog.com/liangairan/archive/2012/05/06/173810.html</link><dc:creator>狂烂球</dc:creator><author>狂烂球</author><pubDate>Sun, 06 May 2012 03:17:00 GMT</pubDate><guid>http://www.cppblog.com/liangairan/archive/2012/05/06/173810.html</guid><wfw:comment>http://www.cppblog.com/liangairan/comments/173810.html</wfw:comment><comments>http://www.cppblog.com/liangairan/archive/2012/05/06/173810.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/liangairan/comments/commentRss/173810.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/liangairan/services/trackbacks/173810.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: AIREngine已经支持插件式的开发，即不需要开发人员在工程上连接某个DLL和lib，直接通过LoadLibrary的形式加载。&nbsp;&nbsp;<a href='http://www.cppblog.com/liangairan/archive/2012/05/06/173810.html'>阅读全文</a><img src ="http://www.cppblog.com/liangairan/aggbug/173810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/liangairan/" target="_blank">狂烂球</a> 2012-05-06 11:17 <a href="http://www.cppblog.com/liangairan/archive/2012/05/06/173810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>