﻿<?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>IT博客-遗忘河</title><link>http://www.cnitblog.com/lethep/</link><description>一个人的烦恼是因为记性太好.</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 06:00:18 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 06:00:18 GMT</pubDate><ttl>60</ttl><item><title>Another chaps online</title><link>http://www.cnitblog.com/lethep/archive/2008/10/13/50147.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Mon, 13 Oct 2008 11:55:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2008/10/13/50147.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/50147.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2008/10/13/50147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/50147.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/50147.html</trackback:ping><description><![CDATA[<p align=left><embed align=middle src=http://player.youku.com/player.php/sid/XODE4Njk4OTI=/v.swf width=480 height=400 type=application/x-shockwave-flash quality="high" allowScriptAccess="sameDomain"></embed>&nbsp;&nbsp;</p>
<p align=left><br>some gameplay screens.<br><img style="WIDTH: 774px; HEIGHT: 608px" height=608 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/Fighters1.jpg" width=774 border=0><br>马桶刷:<br><img style="WIDTH: 773px; HEIGHT: 604px" height=604 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters3.jpg" width=773 border=0><br><img style="WIDTH: 773px; HEIGHT: 604px" height=604 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters4.jpg" width=773 border=0><br><img style="WIDTH: 772px; HEIGHT: 602px" height=602 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters5.jpg" width=772 border=0><br>被炸弹炸飞:<br><img style="WIDTH: 772px; HEIGHT: 600px" height=600 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters_Bomb1.JPG" width=772 border=0><br><img style="WIDTH: 768px; HEIGHT: 600px" height=600 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters_Compressor2.JPG" width=768 border=0><br>被狗子咬住:<br><img style="WIDTH: 762px; HEIGHT: 597px" height=597 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters_Dog2.JPG" width=762 border=0><br>被拳套冲倒:<br><img style="WIDTH: 764px; HEIGHT: 598px" height=598 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters_Gloves2.JPG" width=764 border=0><br>弹弓:<br><img style="WIDTH: 761px; HEIGHT: 598px" height=598 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters_Sling1.JPG" width=761 border=0><br>烟雾弹:<br><br><img style="WIDTH: 759px; HEIGHT: 594px" height=594 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Fighters_SmokeShell2.JPG" width=759 border=0><br><br><br><br></p>
<img src ="http://www.cnitblog.com/lethep/aggbug/50147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2008-10-13 19:55 <a href="http://www.cnitblog.com/lethep/archive/2008/10/13/50147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Another CHAPS...</title><link>http://www.cnitblog.com/lethep/archive/2008/09/11/49010.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Thu, 11 Sep 2008 12:46:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2008/09/11/49010.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/49010.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2008/09/11/49010.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/49010.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/49010.html</trackback:ping><description><![CDATA[道具商城:<br><img style="WIDTH: 524px; HEIGHT: 375px" height=375 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/1.jpg" width=524 border=0><br>弹弓<br><img style="WIDTH: 521px; HEIGHT: 389px" height=389 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/2.jpg" width=521 border=0><br><br><img style="WIDTH: 528px; HEIGHT: 380px" height=380 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/3.jpg" width=528 border=0><br><br>wait room.<br><img style="WIDTH: 530px; HEIGHT: 403px" height=403 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/4.jpg" width=530 border=0> 
<img src ="http://www.cnitblog.com/lethep/aggbug/49010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2008-09-11 20:46 <a href="http://www.cnitblog.com/lethep/archive/2008/09/11/49010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Terrain Texture Generation for splating terrain.</title><link>http://www.cnitblog.com/lethep/archive/2007/08/20/32109.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Mon, 20 Aug 2007 05:50:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2007/08/20/32109.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/32109.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2007/08/20/32109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/32109.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/32109.html</trackback:ping><description><![CDATA[<p>当实现分割地形的时候,最好的情况下是能够给每一个分块单独的地表贴图,而不是多个纹理即时混合.事实上,在非编辑状态下,多纹理混合都有性能和硬件支持的问题.比方说某个分区用到了9张纹理,草地,雪地,岩石,泥浆等等. 如果在一个最大支持8纹理的硬件上,要想全部渲染,必须得来2次了, 当然,你可以经验性地控制住每个分区的纹理数目,但是同时也降低了地形的表现能力. 因此,我们往往会将多个纹理混合到一张纹理中,在渲染中只渲染这种混合好的纹理.<br><br>目前能找到的关于地形纹理构建的文章都是基于高度来决定最终纹理的数据,但是这种方式有天然的缺陷,对于大多数的地形而言,高度差并不大,还不足够形成令人信服的垂直气候. 而且,对于一条自然道路,更是和地形高度毫无关联了.因此,我们需要一种更灵活的构建方式.<br><br>在本人实现中,采取一种通用的Alpha Map 方式. <br><br>newColor = oldColor*(1-mask) + srcColor*mask;<br>逐层地将新的层按照alpha 混合到旧层中. 以下是岩石,草地,沙子按alpha混合的最终效果图:<br><br><img style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" height=512 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/Result.jpg" width=512 border=1><br><br>具体实现见代码:<br><a title=下载代码和资源(VC7.1) href="http://www.cnitblog.com/Files/lethep/TerrTexGen.rar">下载代码和可执行程序</a><br><br>需要注意的是,这种方式涉及到对位图的缩放采样. 在上面的代码实现中,我使用最简单的效果也最差的point 采样方式,这种方式有时也被叫做nearest~~ 也就是说,质量是最差的. 当然,你也可以采取线性,双线,三线,各向异性等方式.&nbsp;google it.<br></p>
<img src ="http://www.cnitblog.com/lethep/aggbug/32109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2007-08-20 13:50 <a href="http://www.cnitblog.com/lethep/archive/2007/08/20/32109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纹理空间水面模拟</title><link>http://www.cnitblog.com/lethep/archive/2007/08/20/32095.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Mon, 20 Aug 2007 01:40:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2007/08/20/32095.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/32095.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2007/08/20/32095.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/32095.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/32095.html</trackback:ping><description><![CDATA[<img style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" height=572 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/water.jpg" width=800 align=left border=1><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于这个根本就不是什么新鲜事情了,但是大多数都是基于几何体的,最后常常导致一个问题:当镜头处于水面的时候,且水下已经用体积雾处理,<br>这个时候,水面网格常常会表现得着色(雾颜色)不均匀,有难看得锯齿.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GPG 上有一篇关于程序纹理的文章,也是关于水模拟的. 这里引作参考,实现了一种基于纹理空间的水模拟.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 之所以要基于纹理空间,是因为我还需要在上面加入推进式波浪,参见Crysis GDC 上放出的视频. 目前要实现那样的效果,<br>我想到的只有在纹理空间比较好解决. 
<img src ="http://www.cnitblog.com/lethep/aggbug/32095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2007-08-20 09:40 <a href="http://www.cnitblog.com/lethep/archive/2007/08/20/32095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>矩阵求逆的一种优化算法(C)</title><link>http://www.cnitblog.com/lethep/archive/2007/08/15/31881.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Wed, 15 Aug 2007 08:20:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2007/08/15/31881.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/31881.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2007/08/15/31881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/31881.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/31881.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">inline&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;LMatrix44::GetInverse(LMatrix44</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;matInvDest)&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_63_2847_Open_Image onclick="this.style.display='none'; Codehighlighter1_63_2847_Open_Text.style.display='none'; Codehighlighter1_63_2847_Closed_Image.style.display='inline'; Codehighlighter1_63_2847_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_63_2847_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_63_2847_Closed_Text.style.display='none'; Codehighlighter1_63_2847_Open_Image.style.display='inline'; Codehighlighter1_63_2847_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_63_2847_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_63_2847_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;事实上,我们绝大多数的逆操作都能成功.&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;注意到我们GetDeterm()&nbsp;操作中计算了一部分余子式,如果逆操作成功,那么GetDeterm就浪费了.<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;因此我们选用一种对以可逆为前提的优化.</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;assert(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">matInvDest&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m33&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m44;&nbsp;tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m43&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m34;&nbsp;tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m23&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m44;&nbsp;tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m24&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m43;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m23&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m34;&nbsp;tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m33&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m24;&nbsp;tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m13&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m44;&nbsp;tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m43&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m14;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m13&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m34;&nbsp;tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m33&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m14;&nbsp;tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m13&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m24;&nbsp;tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m23&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m14;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;#&nbsp;12*<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;计算余子式&nbsp;(倒置伴随矩阵)</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m11&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m22</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m32</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m42</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]);&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;3*&nbsp;3-&nbsp;2+</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m12&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m12</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m32</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m42</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m13&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m12</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m22</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m42</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m14&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m12</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m22</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m32</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m21&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m21</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m31</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m41</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m22&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m11</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m31</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m41</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m23&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m11</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m21</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m41</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m24&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m11</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m21</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m31</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">36*&nbsp;24-&nbsp;16+</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m31&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m42;&nbsp;tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m41&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m32;&nbsp;tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m21&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m42;&nbsp;tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m41&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m22;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m21&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m32;&nbsp;tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m31&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m22;&nbsp;tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m11&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m42;&nbsp;tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m41&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m12;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m11&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m32;&nbsp;tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m31&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m12;&nbsp;tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m11&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m22;&nbsp;tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m21&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;m12;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m31&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m24</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m34</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m44</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m32&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m14</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m34</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m44</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m33&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m14</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m23</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m44</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m34&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m14</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m24</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m34</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m41&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m23</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m33</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m43</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m42&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m33</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m13</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m43</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m43&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m23</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m13</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m43</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m44&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m13</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m33</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m23</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(tmp[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;72*&nbsp;48-&nbsp;32+</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;fDet</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(m11</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">matInvDest.m11&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m21</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">matInvDest.m12&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m31</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">matInvDest.m13&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m41</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">matInvDest.m14);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;4*&nbsp;3+</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(LAbs(fDet)&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0.000001f</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_2399_2446_Open_Image onclick="this.style.display='none'; Codehighlighter1_2399_2446_Open_Text.style.display='none'; Codehighlighter1_2399_2446_Closed_Image.style.display='inline'; Codehighlighter1_2399_2446_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_2399_2446_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2399_2446_Closed_Text.style.display='none'; Codehighlighter1_2399_2446_Open_Image.style.display='inline'; Codehighlighter1_2399_2446_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_2399_2446_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2399_2446_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.SetIdentity();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fDet&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1.0f</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">fDet;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m11</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m12</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m13</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m14</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m21</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m22</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m23</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m24</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m31</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m32</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m33</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m34</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;matInvDest.m41</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m42</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m43</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;matInvDest.m44</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;fDet;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">16*</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>以上是优化实现,以12个浮点的零时变量消耗,通过计算倒置伴随矩阵,最终获得逆矩阵. 在实现中,以矩阵可逆为前提,避免了大部分的cofactor 计算. <br>比常规通过求模,然后求逆要少60次乘法.<br><br>缺点: 没有形成很好的16字节排列,依旧不便于SSE/SSE2指令优化.<br>
<img src ="http://www.cnitblog.com/lethep/aggbug/31881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2007-08-15 16:20 <a href="http://www.cnitblog.com/lethep/archive/2007/08/15/31881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Firework Simulation.</title><link>http://www.cnitblog.com/lethep/archive/2007/07/16/29910.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Mon, 16 Jul 2007 08:24:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2007/07/16/29910.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/29910.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2007/07/16/29910.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/29910.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/29910.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;使用 point_sprit 代替Quad 渲染粒子.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.采用一个双向链表组织的缓存管理粒子的生命期.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.定义一个点阵算法来提高烟花爆炸行为定义的灵活度. 点阵可以从Photoshop 中导出.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.定义一个层次化的结构来组织每个烟花爆破单元.这样可以让一个纯粹的烟花表现变得更加丰富,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个思路来源自unreal 3 的粒子系统. 但是这样做,导致编辑变得非常困难,最后只好通过脚本来定义了.<br>&nbsp;<br><br><img style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" height=447 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/bbt2.png" width=600 border=1><br><img style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" height=447 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/bbt3.png" width=600 border=1><br><img style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" height=447 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/bbt5.png" width=600 border=1><br><img style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-COLOR: #000000; BORDER-RIGHT-COLOR: #000000" height=447 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/FwEditor.jpg" width=600 border=1><br><br>
<img src ="http://www.cnitblog.com/lethep/aggbug/29910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2007-07-16 16:24 <a href="http://www.cnitblog.com/lethep/archive/2007/07/16/29910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Real-Time Shore Rendering</title><link>http://www.cnitblog.com/lethep/archive/2007/04/28/26323.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Sat, 28 Apr 2007 03:16:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2007/04/28/26323.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/26323.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2007/04/28/26323.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/26323.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/26323.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 花了近一周的空余时间,对shore rendering 进行了优化. 现在的效果:<br><img height=336 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/shore_01.jpg" width=500 border=0><br>&nbsp; 在岸边坡度较高的地方:<br><img height=326 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/shore_02.jpg" width=500 border=0><br><br>修改了寻找海岸边沿的算法. 采取一种类似A* 寻路的递归检测算法. 能够快速勾勒水岸线.<br>在描边的过程中,需要记录当前点周围6个三角形与水面的相交情况.这个在以后的拉伸过程中会用到.<br><br>#2<br>假定海浪的动能为 W, 那么海浪能上升的高度是一个常数&nbsp; h = F(W/g ). .<br>将水岸线沿Y(垂直水面的方向)上升 h 高度.<br><br>遍历所有封闭的水岸线.<br>&nbsp;遍历每一个水岸线的点.<br>&nbsp; 计算每个点的拉伸方向.&nbsp;这里要特别注意的是,如果相邻2个点距离过近,拉伸法线出现相交的几率很大.最后导致海浪起点重叠.会出现<br>难看的褶皱. 所以,我们需要在计算拉伸法线前,去判断这个情况,然后抛弃出现相交的点.<br>&nbsp;&nbsp; &nbsp;<br>&nbsp;沿着拉伸法线extrude 出海浪的起点.<br><br>#3<br>&nbsp;接下来,需要找到海浪的终点,这其实是一步与地形求交的过程, 只是注意下求交的时候只遍历当前点附近的 3*3个点附近的三角形就够了,然后选择一个<br>交点最近的.作为终点.<br><br>对Far Cry , fort 地形 1024*1024 个顶点run-time 构建 shore- strip 的鸟瞰图, 这里镜头拉得有些远, 地形得细节等级都处于最低等级.<img height=339 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Screenshot/shore_03.jpg" width=500 border=0><br>
<img src ="http://www.cnitblog.com/lethep/aggbug/26323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2007-04-28 11:16 <a href="http://www.cnitblog.com/lethep/archive/2007/04/28/26323.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EXT_Frame_buffer_object On Nvidia and ATI</title><link>http://www.cnitblog.com/lethep/archive/2007/04/24/26109.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Tue, 24 Apr 2007 07:35:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2007/04/24/26109.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/26109.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2007/04/24/26109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/26109.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/26109.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CheckFramebufferStatus()<br><img id=Codehighlighter1_31_1326_Open_Image onclick="this.style.display='none'; Codehighlighter1_31_1326_Open_Text.style.display='none'; Codehighlighter1_31_1326_Closed_Image.style.display='inline'; Codehighlighter1_31_1326_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_31_1326_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_1326_Closed_Text.style.display='none'; Codehighlighter1_31_1326_Open_Image.style.display='inline'; Codehighlighter1_31_1326_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_31_1326_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_31_1326_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;GLenum&nbsp;status;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(GLenum)&nbsp;glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);<br><img id=Codehighlighter1_142_1324_Open_Image onclick="this.style.display='none'; Codehighlighter1_142_1324_Open_Text.style.display='none'; Codehighlighter1_142_1324_Closed_Image.style.display='inline'; Codehighlighter1_142_1324_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_142_1324_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_142_1324_Closed_Text.style.display='none'; Codehighlighter1_142_1324_Open_Image.style.display='inline'; Codehighlighter1_142_1324_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(status)&nbsp;</span><span id=Codehighlighter1_142_1324_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_142_1324_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;GL_FRAMEBUFFER_COMPLETE_EXT:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;GL_FRAMEBUFFER_UNSUPPORTED_EXT:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Unsupported&nbsp;framebuffer&nbsp;format\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Framebuffer&nbsp;incomplete,&nbsp;missing&nbsp;attachment\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Framebuffer&nbsp;incomplete,&nbsp;duplicate&nbsp;attachment\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Framebuffer&nbsp;incomplete,&nbsp;attached&nbsp;images&nbsp;must&nbsp;have&nbsp;same&nbsp;dimensions\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Framebuffer&nbsp;incomplete,&nbsp;attached&nbsp;images&nbsp;must&nbsp;have&nbsp;same&nbsp;format\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Framebuffer&nbsp;incomplete,&nbsp;missing&nbsp;draw&nbsp;buffer\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Framebuffer&nbsp;incomplete,&nbsp;missing&nbsp;read&nbsp;buffer\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">unknown&nbsp;error&nbsp;!!!!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CreateDepthSurface()<br><img id=Codehighlighter1_1355_3255_Open_Image onclick="this.style.display='none'; Codehighlighter1_1355_3255_Open_Text.style.display='none'; Codehighlighter1_1355_3255_Closed_Image.style.display='inline'; Codehighlighter1_1355_3255_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1355_3255_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1355_3255_Closed_Text.style.display='none'; Codehighlighter1_1355_3255_Open_Image.style.display='inline'; Codehighlighter1_1355_3255_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_1355_3255_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1355_3255_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;在N卡上,必须创建&nbsp;color&nbsp;buffer&nbsp;的镜像.<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;否则,depth&nbsp;buffer&nbsp;是无效的.<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;如果不想向color&nbsp;buffer&nbsp;写入数据.<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;可以调用&nbsp;glDrawBuffer(GL_NONE)&nbsp;glReadBuffer(GL_NONE)&nbsp;来屏蔽.<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;而在A卡上,&nbsp;是可以创建独立的&nbsp;Depth&nbsp;buffer&nbsp;的..</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">glGenTextures(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">ctex);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;glGenRenderbuffersEXT(1,&nbsp;&amp;depth_rb);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,&nbsp;fb);&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;init&nbsp;texture<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;glBindTexture(texTarget,&nbsp;tex);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;glTexImage2D(texTarget,&nbsp;0,&nbsp;texInternalFormat,&nbsp;texWidth,&nbsp;texHeight,&nbsp;0,&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_RGBA,&nbsp;GL_FLOAT,&nbsp;NULL);</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_1841_1915_Open_Image onclick="this.style.display='none'; Codehighlighter1_1841_1915_Open_Text.style.display='none'; Codehighlighter1_1841_1915_Closed_Image.style.display='inline'; Codehighlighter1_1841_1915_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1841_1915_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1841_1915_Closed_Text.style.display='none'; Codehighlighter1_1841_1915_Open_Image.style.display='inline'; Codehighlighter1_1841_1915_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1841_1915_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_1841_1915_Open_Text><span style="COLOR: #808080">////////////////////////////////////////////////////////////////////////</span><span style="COLOR: #008000">//</span><span style="COLOR: #808080"></span></span><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glBindTexture(GL_TEXTURE_2D,&nbsp;ctex);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexImage2D(GL_TEXTURE_2D,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;GL_RGB8,&nbsp;texWidth,&nbsp;texWidth,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;GL_RGB,&nbsp;GL_UNSIGNED_BYTE,&nbsp;NULL);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexParameterf(GL_TEXTURE_2D,&nbsp;GL_TEXTURE_MIN_FILTER,&nbsp;GL_NEAREST);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexParameterf(GL_TEXTURE_2D,&nbsp;GL_TEXTURE_MAG_FILTER,&nbsp;GL_NEAREST);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexParameterf(GL_TEXTURE_2D,&nbsp;GL_TEXTURE_WRAP_S,&nbsp;GL_CLAMP_TO_EDGE);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexParameterf(GL_TEXTURE_2D,&nbsp;GL_TEXTURE_WRAP_T,&nbsp;GL_CLAMP_TO_EDGE);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glGenTextures(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">dtex);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glBindTexture(GL_TEXTURE_2D,&nbsp;dtex);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexImage2D(GL_TEXTURE_2D,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;GL_DEPTH_COMPONENT24,&nbsp;texWidth,&nbsp;texWidth,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;GL_DEPTH_COMPONENT,&nbsp;GL_INT,&nbsp;NULL);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexParameterf(GL_TEXTURE_2D,&nbsp;GL_TEXTURE_MIN_FILTER,&nbsp;GL_NEAREST);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexParameterf(GL_TEXTURE_2D,&nbsp;GL_TEXTURE_MAG_FILTER,&nbsp;GL_NEAREST);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexParameterf(GL_TEXTURE_2D,&nbsp;GL_TEXTURE_WRAP_S,&nbsp;GL_CLAMP_TO_EDGE);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glTexParameterf(GL_TEXTURE_2D,&nbsp;GL_TEXTURE_WRAP_T,&nbsp;GL_CLAMP_TO_EDGE);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;glGenFramebuffersEXT(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">fb);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,&nbsp;fb);&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckFramebufferStatus();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,&nbsp;GL_COLOR_ATTACHMENT0_EXT,&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_TEXTURE_2D,&nbsp;ctex,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CheckFramebufferStatus();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_DEPTH_ATTACHMENT_EXT,<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GL_TEXTURE_2D,&nbsp;dtex,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;CheckFramebufferStatus();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>glDrawBuffer(GL_NONE);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;glReadBuffer(GL_NONE);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>我很奇怪为什么SGI , OPENGL.ORG 上的关于fbo扩展的文档都没有说明这一点. 连NV自己的也没有. 或许是那么长的一篇文章,我没有看仔细.<br>郁闷,,,郁闷,,,,,郁闷. <br>
<img src ="http://www.cnitblog.com/lethep/aggbug/26109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2007-04-24 15:35 <a href="http://www.cnitblog.com/lethep/archive/2007/04/24/26109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修正的Bloom 效果.</title><link>http://www.cnitblog.com/lethep/archive/2007/04/21/25983.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Sat, 21 Apr 2007 12:29:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2007/04/21/25983.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/25983.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2007/04/21/25983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/25983.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/25983.html</trackback:ping><description><![CDATA[进行了高斯模糊,并且故意强曝光. 如梦般的感觉.<br><img style="BORDER-LEFT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; WIDTH: 551px; BORDER-TOP-COLOR: #000000; HEIGHT: 377px; BORDER-RIGHT-COLOR: #000000" height=377 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lethep/Torque_Glow.jpg" width=551 border=1> 
<img src ="http://www.cnitblog.com/lethep/aggbug/25983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2007-04-21 20:29 <a href="http://www.cnitblog.com/lethep/archive/2007/04/21/25983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>忙碌...</title><link>http://www.cnitblog.com/lethep/archive/2007/04/04/25258.html</link><dc:creator>大悟终空</dc:creator><author>大悟终空</author><pubDate>Wed, 04 Apr 2007 14:13:00 GMT</pubDate><guid>http://www.cnitblog.com/lethep/archive/2007/04/04/25258.html</guid><wfw:comment>http://www.cnitblog.com/lethep/comments/25258.html</wfw:comment><comments>http://www.cnitblog.com/lethep/archive/2007/04/04/25258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lethep/comments/commentRss/25258.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lethep/services/trackbacks/25258.html</trackback:ping><description><![CDATA[<p>下午开始接手山海繁体版的工作,一堆的BUG和需求...但愿是个特例,今天在繁体WINXP上忙了一下,感觉整个显示屏像蒙了一层纱布,很影响视觉,字体的轮廓丑陋得让我想起linux. 像山海那样从TureType字体构建位图字体的方式,对我们非常清晰的中文字体也会带来模糊,也怪不得台湾那边的玩家抱怨了.<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">inline&nbsp;bool&nbsp;GetBit(</span><span style="COLOR: #0000ff">BYTE</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pSrc,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nBit)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(pSrc[nBit</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">])</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">(nBit%</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">)));<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>}<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br>//=======================================================<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(GetGlyphOutlineW(<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hFontDC,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">&nbsp;设备环境<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wChar,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">&nbsp;要获取轮廓的字符<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GGO_BITMAP,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">&nbsp;要获取的数据类型.GGO_GRAY8_BITMAP<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">metrics,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">&nbsp;字符的信息<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sizeof(scratchPad),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">&nbsp;要返回数据内存的大小<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scratchPad,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">&nbsp;接收返回数据的内存地址<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">matrix)&nbsp;!</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;GDI_ERROR)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">&nbsp;字符渲染时候的变换矩阵<br>{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glyphCount</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UINT&nbsp;rowStride&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(metrics.gmBlackBoxX&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;~</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">&nbsp;DWORD&nbsp;aligned<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UINT&nbsp;size&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rowStride&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;metrics.gmBlackBoxY;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowStride&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rowStride</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">((rowStride%</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowStride&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(rowStride</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;~</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(UINT&nbsp;y&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">(y)&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;metrics.gmBlackBoxY;&nbsp;y</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UINT&nbsp;x;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;x&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;metrics.gmBlackBoxX;&nbsp;x</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 强制去掉字体边缘的阴影.<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.bitmapData[y&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;c.width&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;x]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;GetBit(src</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">y&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;stride,&nbsp;x)?&nbsp;</span><span style="COLOR: #000000">255</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>}<br>//=============================================================<img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>以上方式的获取就会让轮廓清晰多了.<br><br>紧接着来的是关于繁体注音输入法的问题, L D 注音的(我不知道怎么去说繁体注音)的第三个字在IME组字的时候 WPARAM 传来的是 63 ('?') . 百思不得其解.<br>在WIN32 记事本上却是显示的非常正常.还有"锶"等也是如此...新建一个MFC对话框程序,上面的CEdit控件输入这些字符的时候也是显示的 ? ......<br>更加迷惑....查遍了论坛,也没有找到解决办法. 正想离开公司的时候突然想到, 记事本用的是RichEdit,而RichEdit 是基于Unicode 字符集的, Edit 则是多字节字符集.&nbsp;是这个问题麽? 修改工程编译选项,选择字符集为UNICODE.结果,CEdit 果然能正确显示繁体"锶"了,那么接下来的事情就很明了啦.....我又有得忙了.....<br>回家的路上我正想游到对岸,统一了台湾,统一使用简体中文. 
<img src ="http://www.cnitblog.com/lethep/aggbug/25258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lethep/" target="_blank">大悟终空</a> 2007-04-04 22:13 <a href="http://www.cnitblog.com/lethep/archive/2007/04/04/25258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>