﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-大道无亲 大象无形 大音希声 大巧若拙 大智若愚 大器晚成-随笔分类-IdTech系列</title><link>http://www.cppblog.com/CornerZhang/category/6359.html</link><description>生命的隐喻：自我意识产生于躯体，躯体产生于食物，食物源于物质，物质源于太阳辐射能。
&lt;P&gt;http://cyberzei.wordpress.com&lt;/P&gt;
</description><language>zh-cn</language><lastBuildDate>Sun, 13 May 2012 13:36:31 GMT</lastBuildDate><pubDate>Sun, 13 May 2012 13:36:31 GMT</pubDate><ttl>60</ttl><item><title>仿照Doom3里面的部分代码，给自己的引擎加入了screenshot功能，show一张图</title><link>http://www.cppblog.com/CornerZhang/archive/2012/05/13/174758.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sun, 13 May 2012 06:26:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2012/05/13/174758.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/174758.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2012/05/13/174758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/174758.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/174758.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/cornerzhang/screenshot1.png" width="640" height="480" /><br /><br />写了个自己用的小引擎，只显示了mesh，材质和贴图未应用上去<img src ="http://www.cppblog.com/CornerZhang/aggbug/174758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2012-05-13 14:26 <a href="http://www.cppblog.com/CornerZhang/archive/2012/05/13/174758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DoomEd Snapshot</title><link>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173100.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sat, 28 Apr 2012 15:08:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173100.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/173100.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173100.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/173100.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/173100.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/cornerzhang/Untitled.png" width="864" height="854" /><img src ="http://www.cppblog.com/CornerZhang/aggbug/173100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2012-04-28 23:08 <a href="http://www.cppblog.com/CornerZhang/archive/2012/04/28/173100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Doom3源代码 code review 01</title><link>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173010.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sat, 28 Apr 2012 01:44:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173010.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/173010.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173010.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/173010.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/173010.html</trackback:ping><description><![CDATA[<div>其整体结构不怎么面向对象<br /><br />以一份全局指针的方式访问某个系统模块或管理器，一切沿袭自C版本的idTech设计，如下<br /><br />// FileSystem.h<br /><br /><a title="class" href="http://www.cppblog.com/CornerZhang">class</a> idFileSystem {<br />public:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual void&nbsp;&nbsp;&nbsp;Init( void ) = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual void&nbsp;&nbsp;&nbsp;Shutdown( void ) = 0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// methed...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual void&nbsp;&nbsp;&nbsp;ListFiles( ... ) = 0;<br /><br />};<br /><br />extern idFileSystem*&nbsp;&nbsp;&nbsp;fileSystem;<br /><br />// FileSystem.cpp<br />#include "FileSystem"<br /><br /><a title="class" href="http://www.cppblog.com/CornerZhang">class</a> idFileSystemLocal: public idFileSystem {<br />public:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Init( void );<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Shutdown( void );<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// methed...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;ListFiles( ... );<br /><br />};<br /><br />idFileSystemLocal&nbsp;&nbsp;&nbsp;fileSystemInstance;<br />idFileSystem*&nbsp;&nbsp;&nbsp;fileSystem = &amp;fileSystemInstance;<br /><br />void&nbsp;&nbsp;&nbsp;idFileSystemLocal::Init( void ) {<br />}<br /><br />void&nbsp;&nbsp;&nbsp;idFileSystemLocal::Shutdown( void ) {<br />}<br /><br />// methed...<br />void&nbsp;&nbsp;&nbsp;idFileSystemLocal::ListFiles( ... ) {<br />}<br /><br />然后其使用端代码如下:<br />fileSysem-&gt;Init();<br /><br />fileSystem-&gt;ListFile( files, .... );<br /><br />fileSystem-&gt;Shutdown();<br /><br />这种手法大量运用，很好的达到了子系统间的解耦！！<br />里面的idCommon, idCmdSystem, idRenderSystem, idSoundSystem, idCVarSystem, idGame等，都是这一套<br /><br />简单而有效的tip，这样以后的某个模块要做成动态库版本，只需通过获得这个接口指针就可</div><img src ="http://www.cppblog.com/CornerZhang/aggbug/173010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2012-04-28 09:44 <a href="http://www.cppblog.com/CornerZhang/archive/2012/04/28/173010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Doom3 编辑器已经运行！！！ ^^</title><link>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173008.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sat, 28 Apr 2012 01:31:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173008.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/173008.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/173008.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/173008.html</trackback:ping><description><![CDATA[<div>看了眼官网<a href="http://www.iddevnet.com">www.iddevnet.com</a>的Doom3Ed段<br /><br />原文：<br />The easiest way to start the editor is by typing <samp>editor</samp> in the console. If you open the editor a lot, you'll probably want to create a direct short cut to it. </div>
<p>1: Right-Click the Doom 3 short cut and select "Copy" then "Paste" it in the same place (so you get "Copy of Shortcut to Doom" or something similar). 
<p>2: Rename this shortcut to "DOOMEdit" 
<p>3: Right-click the new shortcut and select "Properties". Specify the following for "Target":<br /><samp><span style="background-color: #ffff00">"C:\Doom3\Doom3.exe" +set r_fullscreen 0 +editor +set com_allowConsole 1</span></samp><br />(This of course assumes you have Doom 3 installed in C:\Doom3\) 
<p>The editor does not work with antialiasing turned on, so you may need to add:<br /><samp>+set r_multiSamples 0</samp> 
<p>The first time you open DOOMEdit, you will want to click <kbd>File-&gt;Project Settings</kbd> and change all the paths to point to wherever you have Doom 3 installed (by default they are set to where the level designers here at id have Doom 3 installed). There is a small bug in that dialog box, after you click <kbd>OK</kbd>, you will need to copy the "doom.qe4" into the "base" fo<span>lder. </span></p>
<div><br /><span style="background-color: #ffff00"></span><font style="background-color: #ffff00"><span>关键是黄色部分文字</span></font></div>
<p><font style="background-color: #ffff00"><span></span></font>&nbsp;</p>
<p><font style="background-color: #ffff00"><span></span>&nbsp;</p>
<div><br />改天，放一张运行截图 呵呵<br /></font><br /></div><img src ="http://www.cppblog.com/CornerZhang/aggbug/173008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2012-04-28 09:31 <a href="http://www.cppblog.com/CornerZhang/archive/2012/04/28/173008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iDTech4(Doom3)编译以通过</title><link>http://www.cppblog.com/CornerZhang/archive/2012/03/15/168009.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 15 Mar 2012 11:19:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2012/03/15/168009.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/168009.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2012/03/15/168009.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/168009.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/168009.html</trackback:ping><description><![CDATA[呵呵 修改了下几处读取游戏资源包CRC校验码的地方<br />编译出来的release版本 在1.8GB的原作游戏资源上奔跑顺利 而且完整通关！<br /><br />接下来开始调制其内带的编辑器！<br /><br />有遇上问题的朋友，互相交流 ^^<img src ="http://www.cppblog.com/CornerZhang/aggbug/168009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2012-03-15 19:19 <a href="http://www.cppblog.com/CornerZhang/archive/2012/03/15/168009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天开始 有空就看看Doom3.gpl</title><link>http://www.cppblog.com/CornerZhang/archive/2011/11/24/160900.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Thu, 24 Nov 2011 06:20:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2011/11/24/160900.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/160900.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2011/11/24/160900.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/160900.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/160900.html</trackback:ping><description><![CDATA[<div><font style="background-color: #c0c0c0"><span style="color: #000000">昨天得到了 Doom3.gpl源码</span><br /><span style="color: #000000">开始 研究idTech4</span><br /><br /><span style="color: #000000">技术特性：</span><br /><span style="color: #000000">OpenGL</span><br /><span style="color: #000000">Mega Texture</span><br /><span style="color: #000000">BSP</span><br /><span style="color: #000000">OpenAL</span><br /><br /><span style="color: #000000">此贴留念！</span></font></div><img src ="http://www.cppblog.com/CornerZhang/aggbug/160900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2011-11-24 14:20 <a href="http://www.cppblog.com/CornerZhang/archive/2011/11/24/160900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>看了ETQW_SDK的仿函数机制，以及由此实现的Signal/Slot</title><link>http://www.cppblog.com/CornerZhang/archive/2010/04/20/113102.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Tue, 20 Apr 2010 15:06:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2010/04/20/113102.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/113102.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2010/04/20/113102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/113102.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/113102.html</trackback:ping><description><![CDATA[里面有个概念，基本上Boost里面也有，但有其独到之处。
<p>
基本概念有CallableCaller，Callable，Signal，Connection &amp; ScopedConnection。其特有的是CallableCaller是基于接口实现的，所以可以基于每个特化版本的接口用一个循环来驱动管理，当然，如果使用端code需要完成这样的管理器的话。
</p><p>

它们之间的关系是：CallableCaller被Callable包含，Signal与Callable或CallableCaller链接（Signal&lt;...&gt;::Connect(...)）,Connection和ScopedConnection是Signal做链接时，需要做管理用的小对象，相当于句柄类型，同时Connection是常规版本，而ScopedConnection是在作用域内自动释放连接。
</p><p>

eg:</p><p>
    Functions::Callable<void()> cv(function1); <p>

    Functions::Callable<int()> ci(function1_1);<p>

    cv();</p><p>

    int r = ci();</p><p>


    Functions::Callable<int(int, int)=""> callr(function3_int);<p>

    r = callr(23,23);</p><p>

    Functions::Callable<void(int, int)=""> call(function3);<p>

    call(3,4);</p><p>


    Functions::Signal<int(int,int)> sign1;<p>
    Functions::Signal<void(int,int)> sign2;<p>
    Functions::Connection con = sign1.Connect(callr);</p><p>
    Functions::Connection con2 = sign2.Connect(call);</p><p>
    r = sign1(3,4);</p><p>
    sign2(8,3);</p><p>
    con2.Disconnect();</p><p>
    con.Disconnect();</p><p></p><p>
限制：暂时支持此最多4个参数的函数，暂时不支持成组的信号连接，未考虑线程安全性。
</p><p>
优势: 支持成员函数绑定，由于已经做了适当的代码展开，编译速度比起Loki和Boost中对应的仿函数之类快好多，由此也看出Id Software的Ph.D们务实的作风。在理解所组织的代码后，很容易向更多的参数扩充。控制在有限的代码量内，所以够小。
</p><p></p><p>
本人看懂后，对原来代码稍作了些改进。改进后非常统一，而且语义清晰，但发现Signal类的operator (...)与原来稍有不同了，原因在于这个重载的操作符的返回值上。~   ^^!
</p><p>
这里附上header \ *.lib
http://code.google.com/p/us-engine/downloads/list
</p></void(int,int)></p></int(int,int)></p></void(int,></p></int(int,></p></int()></p></void()></p><img src ="http://www.cppblog.com/CornerZhang/aggbug/113102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2010-04-20 23:06 <a href="http://www.cppblog.com/CornerZhang/archive/2010/04/20/113102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>