﻿<?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++博客-vibilin-随笔分类-Gamebryo</title><link>http://www.cppblog.com/vibilin/category/10163.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 15 Sep 2009 02:23:00 GMT</lastBuildDate><pubDate>Tue, 15 Sep 2009 02:23:00 GMT</pubDate><ttl>60</ttl><item><title>Gamebryo2.5 和 stackless Python的联合调试配置</title><link>http://www.cppblog.com/vibilin/archive/2009/08/29/94714.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Sat, 29 Aug 2009 01:32:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/08/29/94714.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/94714.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/08/29/94714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/94714.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/94714.html</trackback:ping><description><![CDATA[1. 安装stackless Python2.5<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;地址:&nbsp; <a href="http://www.stackless.com/binaries/python-2.5.2-stackless.msi">http://www.stackless.com/binaries/python-2.5.2-stackless.msi</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp; 注意: 如果需要在Vista系统安装, 必须使用2.6版本, 不然将会出现ntdll.dll运行错误.<br><br>2. 下载stackless Python2.5依赖包,&nbsp;解压到stackless Python2.5的安装目录下. 将解压后目录下的<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;地址:&nbsp; <a href="http://www.stackless.com/binaries/stackless-252-export.tar.bz2">http://www.stackless.com/binaries/stackless-252-export.tar.bz2</a><br><br>3. 下载msvcr71d.dll, 解压到stackless Python2.5的安装目录下(2.6.2版本忽略此步).<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 地址:&nbsp; <a href="http://www.dll-files.com/dllindex/msvcr71d.zip?0VHdRFZLlX">http://www.dll-files.com/dllindex/msvcr71d.zip?0VHdRFZLlX</a><br><br>4.&nbsp; 将stackless Python2.5的include, lib目录添加到VC++&nbsp;Directories的include files和Library files中(Tools/Options../Projects and Solutions/VC++ Directories)<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 注: 如果你安装的是stackless Python2.6, 则还需要下载VC2008的运行库(Microsoft Visual C++ 2008 Redistributable Package)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;地址: <a href="http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&amp;displaylang=zh-cn">http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&amp;displaylang=zh-cn</a><br><br>5.&nbsp; 打开控制台, 输入c:\Python26\Lib\idlelib\idle.py(假设Python安装在C盘下), 如果IDLE (Python GUI)没有启动.并且在控制台中输出以下信息&nbsp;就需要将Python26\tcl文件夹下的<br>&nbsp;&nbsp;&nbsp;&nbsp; tcl8.5和tk8.5复制到Python26\Lib文件夹下.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.tk = _tkinter.create(screenName, baseName, className, interactive, want<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objects, useTk, sync, use)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _tkinter.TclError: Can't find a usable init.tcl in the following directories:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.tk = _tkinter.create(screenName, baseName, className, interactive, want<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objects, useTk, sync, use)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_tkinter.TclError: Can't find a usable tk.tcl in the following directories:<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><a href="http://www.cppblog.com/vibilin/archive/2009/08/26/94487.html" target=_blank><br></a><br><br>
<img src ="http://www.cppblog.com/vibilin/aggbug/94714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-08-29 09:32 <a href="http://www.cppblog.com/vibilin/archive/2009/08/29/94714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编译 stackless python</title><link>http://www.cppblog.com/vibilin/archive/2009/08/26/94487.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Wed, 26 Aug 2009 14:57:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/08/26/94487.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/94487.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/08/26/94487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/94487.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/94487.html</trackback:ping><description><![CDATA[<br>1. 下载 stackless python<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;源代码地址: <a href="http://www.stackless.com/binaries/stackless-262-export.tar.bz2">http://www.stackless.com/binaries/stackless-262-export.tar.bz2</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;依赖库地址: <a href="http://www.stackless.com/binaries/stackless-python-262.zip">http://www.stackless.com/binaries/stackless-python-262.zip</a><br><br>2. 解压stackless python源代码包(假设解压后目录为F:\stackless-2.6.2)<br><br>3. 解压依赖库包到F:\stackless-2.6.2目录下, 并将解压后得到的python26.dll和python26_d.dll放到Windows\System32目录下<br><br>4. 下载nasm-0.98.39, 解压后将文件夹下的*.exe文件复制到Windows\System32目录下.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;地址: <a href="http://www.bairuitech.com/upimg/soft/nasm-0.98.39-win32.zip">http://www.bairuitech.com/upimg/soft/nasm-0.98.39-win32.zip</a><br><br>5. 下载OpenSSL(假设解压后目录为D:\openssl-0.9.8g)<br><br>&nbsp;&nbsp;&nbsp;&nbsp; SVN地址: <a href="http://svn.python.org/projects/external/openssl-0.9.8g/">http://svn.python.org/projects/external/openssl-0.9.8g/</a>&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 注: 如果使用的是stackless python252版本, 则下载openssl-0.9.8a<br><br>6. 设置环境变量opensslDir表示openssl目录, 如下:<br><br>&nbsp;&nbsp;&nbsp; <img height=143 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/1.jpg" width=358 border=0><br><br>7.&nbsp;编译openssl, 具体请参考: <a href="http://www.cppblog.com/vibilin/archive/2009/08/24/94315.html" target=_blank>OpenSSL 编译体验</a>&nbsp;(注: 文章描述的是openssl0.9.8a版(对stackless python2.5.2版有效)的编译, 我们这次使用的是0.9.8g版(对stackless python2.6.2版有效))<br><br>8. 下载 sqlite-3.5.9<br>&nbsp;&nbsp;&nbsp;&nbsp; 地址: <a href="http://svn.python.org/projects/external/sqlite-3.5.9">http://svn.python.org/projects/external/sqlite-3.5.9</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注: 如果使用的是stackless python252版本, 则还需下载sqlite-source-3.3.4<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVN地址: <a href="http://svn.python.org/projects/external/sqlite-source-3.3.4/">http://svn.python.org/projects/external/sqlite-source-3.3.4/</a><br><br>9. 编译tcltk<br><br>&nbsp;&nbsp;&nbsp; 1.) 可以选择自己编译tcltk的dll, 具体参考: <a href="http://www.cppblog.com/vibilin/archive/2009/08/25/94334.html" target=_blank>编译TCL/TK</a>. <br><br>&nbsp;&nbsp;&nbsp; 2.) 也可以使用已经编译好的dll<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVN下载地址:&nbsp; <a href="http://svn.slicer.org/Slicer3-lib-mirrors/trunk/Binaries/Windows/tcl85-build">http://svn.slicer.org/Slicer3-lib-mirrors/trunk/Binaries/Windows/tcl85-build</a>. <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载后解压到stackless python同一根目录下, 并将文件夹改名为tcltk.&nbsp; 并将tcltk目录下的include, lib目录添加到VC++ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Directories的include files和Library files中(Tools/Options../Projects and Solutions/VC++ Directories)<br><br>&nbsp;&nbsp;&nbsp; 注: 如果使用的是stackless python252版本, 则还需要tk84.lib/tcl84.lib/tclstub84.lib/tkstub84.lib, 这些文件可在Python安装目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中Python25\tcl目录下找到.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stackless python下载地址:&nbsp;<a href="http://www.stackless.com/binaries/python-2.5.2-stackless.msi">http://www.stackless.com/binaries/python-2.5.2-stackless.msi</a><br><br>10.&nbsp;下载db-4.7.25.0, 解压到stackless python同一根目录下, 并编译.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVN地址: <a href="http://svn.python.org/projects/external/db-4.7.25.0">http://svn.python.org/projects/external/db-4.7.25.0</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注: 如果使用的是stackless python252版本, 则下载db-4.4.20<br><br>11. 下载bzip2-1.0.5, 解压到stackless python同一根目录下, 并编译.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVN地址: <a href="http://svn.python.org/projects/external/bzip2-1.0.5">http://svn.python.org/projects/external/bzip2-1.0.5</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注: 如果使用的是stackless python252版本, 则下载bzip2-1.0.3<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>12. 如果在VC的安装目录下的VC\PlatformSDK\Lib文件夹内没有msi.lib(不是VC\PlatformSDK\Lib\AMD64目录),&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.) 可以选择到Windows的网站上下载<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5" target=_blank>Windows Server 2003 SP1 Platform SDK</a>.&nbsp; 安装后将Microsoft Platform SDK\Lib目录下<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 的Msi.Lib复制到VC\PlatformSDK\Lib目录.&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.) 或者拷贝stackless python(2.5.2/2.6.2)安装目录下libs文件夹里的msi.lib.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SDK地址: <a href="http://download.microsoft.com/download/a/5/f/a5f0d781-e201-4ab6-8c6a-9bb4efed1e1a/PSDK-x86.exe">http://download.microsoft.com/download/a/5/f/a5f0d781-e201-4ab6-8c6a-9bb4efed1e1a/PSDK-x86.exe</a><br><br>13. 准备就绪后打开stackless-2.6.2\PC\VS8.0\pcbuild.sln, 开始编译.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注: 如果你编译的是stackless-2.5.2版本, 则打开stackless-2.5.2\PCbuild\pcbuild.sln.&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果在编译过程中出现" None of these versions appear suitable for building OpenSSL"的输出信息. 尝试修改目录下的<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; build_ssl.py文件, 将红色标注代码分别改为蓝色标注代码:,&nbsp; 并选择安装Perl 5.8.7.815版本<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (地址: <a href="http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.7.815-MSWin32-x86-211909.msi">http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.7.815-MSWin32-x86-211909.msi</a>)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def find_working_perl(perls):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for perl in perls:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fh = os.popen(perl + <span style="COLOR: #ff0000">' -e "use Win32;"'</span>) - 改为 <span style="COLOR: #333399">' configure VC-WIN32'</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fh.read()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc = fh.close()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #ff0000">if rc:</span>&nbsp;-改为 <span style="COLOR: #000080">if rc is True:<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... 
<img src ="http://www.cppblog.com/vibilin/aggbug/94487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-08-26 22:57 <a href="http://www.cppblog.com/vibilin/archive/2009/08/26/94487.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编译TCL/TK</title><link>http://www.cppblog.com/vibilin/archive/2009/08/25/94334.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Mon, 24 Aug 2009 16:07:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/08/25/94334.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/94334.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/08/25/94334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/94334.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/94334.html</trackback:ping><description><![CDATA[<br>1. 下载tcl-8.5.2.x(假设解压后的路径为F:\tcl-8.5.2.x, 然后将文件夹tcl-8.5.2.x改名为tcl8.5.2, 方便后面编译tix.)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVN地址: <a href="http://svn.python.org/projects/external/tcl-8.5.2.x">http://svn.python.org/projects/external/tcl-8.5.2.x</a><br><br>2. 下载tk-8.5.2.x(假设解压后的路径为F:\tk-8.5.2.x, 然后将文件夹tk-8.5.2.x改名为tk8.5.2, 方便后面编译tix.)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVN地址: <a href="http://svn.python.org/projects/external/tk-8.5.2.x">http://svn.python.org/projects/external/tk-8.5.2.x</a><br><br>3. 下载tix-8.4.3.x(假设解压后的路径为F:\tix-8.4.3.x, 为方便操作和统一风格改名为tix8.4.3)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVN地址: <a href="http://svn.python.org/projects/external/tix-8.4.3.x">http://svn.python.org/projects/external/tix-8.4.3.x</a><br><br>4. 启动VS command prompt控制台(开始/程序/Microsoft Visual Studio 2005/Visual Studio Tools/Visual Studio 2005 Command Prompt)<br><br>5.&nbsp; 编译tcl&nbsp; (依次输入以下命令)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.) cd F:\tcl8.5.2\win<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.) nmake -f makefile.vc<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.) nmake -f makefile.vc INSTALLDIR=..\tcltk install<br><br>6. 编译tk&nbsp; (依次输入以下命令)<br><br>&nbsp;&nbsp;&nbsp; 1.) cd F:\tk8.5.2\win<br><br>&nbsp;&nbsp;&nbsp;&nbsp;2.) nmake -f makefile.vc TCLDIR=..\tcl8.5.2<br><br>&nbsp;&nbsp;&nbsp;&nbsp;3.) nmake -f makefile.vc TCLDIR=..\tcl8.5.2 INSTALLDIR=..\tcltk install<br><br>7.编译tix (依次执行以下操作)<br><br>&nbsp;&nbsp;&nbsp; 1.) cd F:\tix8.4.3\win<br><br>&nbsp;&nbsp;&nbsp; 2.) 将tix8.4.3\win\python.mak文件第14行!if&nbsp; $(DEBUG) 修正为 !if "$(DEBUG)" == "1"<br><br>&nbsp;&nbsp;&nbsp; 3.)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 如果你使用的是自定义的Tcl/Tk文件夹名的话, 需要指定TCL_PATCH和TK_PATCH<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nmake -f python.mak TCL_PATCH=..\tcl8.5.2 TK_PATCH=..\tk8.5.2<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 如果是按照上面我说的做法, 只需改变tix8.4.3\win\makefile.vc第45行开始定义的版本号.将8 4 7 改为 8 5 2.如下<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!IFNDEF TCL_MAJOR<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCL_MAJOR&nbsp;= 8<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!ENDIF<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!IFNDEF TCL_MINOR<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCL_MINOR&nbsp;= 5<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!ENDIF<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!IFNDEF TCL_PATCH<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCL_PATCH&nbsp;= 2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!ENDIF<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 4.) 由于makefile.vc配置的原因, 我们需要回头将tcl8.5.2\win和tk8.5.2\win 目录下生成的Release_VC8文件夹改名为Release_IX86_VC8,&nbsp;当然你也可以修改tix8.4.3\win\python.mak<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的第38行判断条件, 原文件代码如下:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!if "$(MACHINE)" != "IX86"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BUILDDIRTOP =$(BUILDDIRTOP)_$(MACHINE)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!endif<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!if $(VCVER) &gt; 6<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BUILDDIRTOP =$(BUILDDIRTOP)_VC$(VCVER)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!endif<br><br>&nbsp;&nbsp;&nbsp; 5.)&nbsp; nmake -f python.mak TCL_PATCH=..\tcl8.5.2 TK_PATCH=..\tk8.5.2 INSTALLDIR=..\tcltk install&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;或者 nmake -f python.mak INSTALLDIR=..\tcltk install&nbsp;(注: 必须将8 4 7 改为 8 5 2 才有效)<br><br>
<img src ="http://www.cppblog.com/vibilin/aggbug/94334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-08-25 00:07 <a href="http://www.cppblog.com/vibilin/archive/2009/08/25/94334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSSL 编译体验</title><link>http://www.cppblog.com/vibilin/archive/2009/08/24/94315.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Mon, 24 Aug 2009 13:45:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/08/24/94315.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/94315.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/08/24/94315.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/94315.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/94315.html</trackback:ping><description><![CDATA[<p><br>1. 下载并安装Perl<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 地址:&nbsp;&nbsp;<a href="http://downloads.activestate.com/ActivePerl/Windows/5.10/ActivePerl-5.10.0.1005-MSWin32-x86-290470.msi">http://downloads.activestate.com/ActivePerl/Windows/5.10/ActivePerl-5.10.0.1005-MSWin32-x86-290470.msi</a><br><br>2. 下载nasm-0.98.39(假设解压后目录为F:\nasm-0.98.39)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;地址: <a href="http://www.bairuitech.com/upimg/soft/nasm-0.98.39-win32.zip">http://www.bairuitech.com/upimg/soft/nasm-0.98.39-win32.zip</a><br><br>3. 下载OpenSSL(假设解压后目录为F:\openssl-0.9.8a)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SVN地址: <a href="http://svn.python.org/projects/external/openssl-0.9.8a/">http://svn.python.org/projects/external/openssl-0.9.8a/</a>&nbsp;(最新版是0.9.8.g)<br><br>4. 启动VS command prompt控制台(开始/程序/Microsoft Visual Studio 2005/Visual Studio Tools/Visual Studio 2005 Command Prompt)<br><br>5. 在控制台依次输入以下命令<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1) <font color=#0000ff>cd F:\openssl-0.9.8a<br></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2)&nbsp;<font color=#0000ff>set path=%path%;F\openssl-0.9.8a\;F\nasm-0.98.39\</font><br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3) <font color=#0000ff>perl configure VC-WIN32</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4) <font color=#0000ff>ms\do_nasm </font><font color=#000000>(生成ms\nt.mak和ms\ntdll.mak等文件)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5)&nbsp;修改ms\nt.mak和ms\ntdll.mak\d32.mak, 去掉CFLAG定义中的/WX. (/WX表示treat warning as error，该开关会导致openssl无法编译)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6)&nbsp;<font color=#0000ff>vcvars32</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp; 7) </font><font color=#0000ff>nmake -f ms\ntdll.mak<br></font></p>
<p>详情请参考:<br><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.) 安装Openssk烦恼解决 <a href="http://blog.csdn.net/wangxing1018/archive/2008/05/25/2480447.aspx">http://blog.csdn.net/wangxing1018/archive/2008/05/25/2480447.aspx</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.) OpenSSL 编译 <a href="http://blog.csdn.net/gnuser/archive/2009/06/01/4231249.aspx">http://blog.csdn.net/gnuser/archive/2009/06/01/4231249.aspx</a></font></p>
<img src ="http://www.cppblog.com/vibilin/aggbug/94315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-08-24 21:45 <a href="http://www.cppblog.com/vibilin/archive/2009/08/24/94315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义Entity Component</title><link>http://www.cppblog.com/vibilin/archive/2009/08/08/92643.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Sat, 08 Aug 2009 13:41:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/08/08/92643.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/92643.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/08/08/92643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/92643.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/92643.html</trackback:ping><description><![CDATA[<br>&nbsp; 自定义Entity Component需要继承NiEntityComponentInterface, 而为了处理智能指针也需要继承NiRefObject. 继承类需要实现NiEntityComponentInterface的四个纯虚函数并重载_SDMInit, _SDMShutdown函数. 以及NiEntityPropertyInterface(NiEntityComponentInterface的父类)的接近30个纯虚函数.<br><br>&nbsp;&nbsp;&nbsp;1. NiEntityComponentInterface函数<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.) _SDMInit和_SDMShutdown是静态函数,&nbsp;分别在程序启动和关闭时,被Gamebryo内部调用. Entity Component在SDMInit进行初始化, 在_SDMShutdow进行销毁处理.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.) Clone 克隆Entity Component并返回新对象指针.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.) GetMasterComponent 获得Entity Component所继承的Component属性的来源对象.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.) SetMasterComponent改变Entity Component的继承属性来源, 但并不在函数里执行继承属性值的更新.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.) GetDependentPropertyNames&nbsp;返回自定义的依赖属性名字队列,&nbsp;这些属性是用来判断Entity Component是否能Attach到Entity上.<br><br><br>&nbsp;&nbsp;&nbsp;2. NiEntityPropertyInterface函数<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.) AddReference&nbsp;增加实例的引用个数<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.) RemoveReference 减少实例的引用个数<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.) GetClassName&nbsp;返回自动以的类名字<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.) GetTemplateID&nbsp;返回自定义的ID. ID是通过guidgen.exe生成.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.) SetTemplateID&nbsp;自定义的Entity Component不能改变ID,&nbsp;所以直接返回false<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.) Update&nbsp;是Entity Component对象更新接口. Entity 更新时, 循环调用所包含的Entity Component的Update&nbsp;函数.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.) BuildVisibleSet 是Entity Component添加可视的NiMesh队列, 最终渲染到Scene上.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.) GetPropertyNames获取自定义属性名队列<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9.) CanResetProperty判断自定义属性集是否包含这个属性<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10.) ResetProperty 设置自定义属性值<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11.) MakePropertyUnique&nbsp;处理继承的属性和自定义的属性重名的情况.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12.) GetDisplayName 返回属性的显示名字<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.) SetDisplayName设定属性的显示名字<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.) GetPrimitiveType获取属性的类型<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15.) SetPrimitiveType设定属性的类型<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16.) GetSemanticType获取属性的语义类型<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17.) SetSemanticType设定属性的语义类型<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;18.) GetDescription获取属性的描述<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;19.) SetDescription设定属性的描述<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20.) GetCategory判断是否拥有属性,并返回类型名(一般是Entity Component Name)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;21.) IsPropertyReadOnly 判断属性是否只读<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;22.) IsPropertyUnique 判断属性是否是唯一的<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23.) IsPropertySerializable 判断属性是否能序列化<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24.) IsPropertyInheritable 判断属性是否是继承的<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25.) IsExternalAssetPath 判断属性是否是一个资源路径<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;26.) GetElementCount 获取同属性名的个数<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27.) SetElementCount 设置同属性名的个数<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;28.) IsCollection 判断属性是否是一个集合<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<img src ="http://www.cppblog.com/vibilin/aggbug/92643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-08-08 21:41 <a href="http://www.cppblog.com/vibilin/archive/2009/08/08/92643.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Gamebryo-gsa文件概述</title><link>http://www.cppblog.com/vibilin/archive/2009/08/08/92614.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Sat, 08 Aug 2009 04:02:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/08/08/92614.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/92614.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/08/08/92614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/92614.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/92614.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp;&nbsp;1. gsa文件(gsa = gamebryo scene asserts) 是 gamebryo存储场景的一种格式, 另一种是nif格式.&nbsp; gas文件是以xml格式存储, 而nif文件是以二进制格式存储.<br><br>&nbsp;&nbsp; 2. gsa文件与nif文件区别<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.) gsa文件通过NiEntityStreamingAscii解析, 而nif文件则通过NiStream解析.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.) gsa文件主要包含3种元素: ENTITY, COMPONENT, PROPERTY. 经过解析后,ENTITY对应继承NiEntityInterface和NiRefObject的派生类实例(如NiGeneralEntity),&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMPONENT对应继承NiEntityComponentInterface和NiRefObject的派生类实例(如NiCameraComponent). PROPERTY对应基本类型数据(如int, float, NiPoint2(3)d 等).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.)&nbsp;gsa文件在SCENES节点定义有效的ENTITY列表. 一个gsa文件包含一个或多个ENTITY, COMPONENT, PROPERTY. 一个ENTITY可以包含一个或多个COMPONENT,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一个COMPONENT可以包含一个或多个PROPERTY. 而某些PROPERTY也包含一个或多个ITEM.(ITEM的值对应的是ENTITY ID).<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.) gsa文件是基于NiEntity Framework. 而NiEntity Framework通过reflection机制向外提供对象属性和功能的访问. 它的主要作用是使游戏可以结合脚本引擎动态改变属性.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.) 角色ENTITY中含有一个特别的COMPONENT - 对应类NiActorComponent.&nbsp;角色模型的动作控制就是通过NiActorComponent里的NiActorManager来实现的.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. ENTITY对象属性<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENTITY对象可以通过GetPropertyData/SetPropertyData函数获得/修改属性值. 而如果是模型ENTITY, 还可以通过NiActorComponent获得NiNode模型数据,通过GetExtraData/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddExtraData来获得/添加自定义的数据.<br>
<img src ="http://www.cppblog.com/vibilin/aggbug/92614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-08-08 12:02 <a href="http://www.cppblog.com/vibilin/archive/2009/08/08/92614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NiSample中NiShader的使用</title><link>http://www.cppblog.com/vibilin/archive/2009/07/29/91638.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Wed, 29 Jul 2009 14:16:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/07/29/91638.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/91638.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/07/29/91638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/91638.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/91638.html</trackback:ping><description><![CDATA[<p><br>一.NiSample的默认执行流程<br><br>&nbsp;&nbsp;&nbsp;1. NiSample在初始化过程中会调用CreateShaderSystem()对Shader进行初始化.<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;2. CreateShaderSystem会调用RunShaderParsers/RunShaderLibraries分别对NSF和NSB初始化.<br><br>&nbsp;&nbsp;&nbsp;3. RunShaderParsers/RunShaderLibraries内有分别调用NiShaderFactory::LoadAndRunParserLibrary和NiShaderFactory::LoadAndRegisterShaderLibrary.<br><br>&nbsp;&nbsp;&nbsp;4. NiShaderFactory::LoadAndRunParserLibrary/NiShaderFactory::LoadAndRegisterShaderLibrary执行时, 会调用注册的回调函数(假设注册的回调函数名分别是ShaderCallback_RunParser, ShaderCallback_LibraryClassCreate).<br><br>&nbsp;&nbsp;&nbsp;5. 而回调函数最后就会分别执行NSBShaderLib_LoadShaderLibrary/NSFParserLib_RunShaderParser解析NSF文件和生成NSB文件.<br><br>二. NiSample的继承类自定义执行流程<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有两种实现方法:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1)重载CreateShaderSystem/RunShaderParsers/RunShaderLibraries函数, 自定义注册用的回调函数.并在回调函数中调用NSBShaderLib_LoadShaderLibrary/NSFParserLib_RunShaderParser<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2) 重载RegisterShaderParsers/RegisterShaderLibraries函数, 将最终实行的函数(NSBShaderLib_LoadShaderLibrary/NSFParserLib_RunShaderParser )注册到NiSample的成员变量中m_kParserLibraries/m_kShaderLibraries.</p>
<img src ="http://www.cppblog.com/vibilin/aggbug/91638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-07-29 22:16 <a href="http://www.cppblog.com/vibilin/archive/2009/07/29/91638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ni3DRenderView/NiSceneRenderView与NiViewRenderClick的使用</title><link>http://www.cppblog.com/vibilin/archive/2009/07/25/90983.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Sat, 25 Jul 2009 15:03:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/07/25/90983.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/90983.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/07/25/90983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/90983.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/90983.html</trackback:ping><description><![CDATA[&nbsp;<br>1. 创建NiRenderView对象<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1) Ni3DRenderView与NiSceneRenderView的区别<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ni3DRenderView是用来画NiAVObject对象的(也就是将内容渲染到NiAVObject对象上), NiAVObject对象通过NiStream从NIF文件读取.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NiSceneRenderView是用来画NiScene对象的, NiScene对象通过NiEntityStreamingAscii从GSA文件读取.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2) 设定NiRenderView使用与NiAVObject/NiSceneNiCamera相同的摄像机<br><br>2.&nbsp;&nbsp;通过NiRenderView::AppendScene(..)设定渲染内容<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ni3DRenderView::AppendScene(NiAVObject* )<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NiSceneRenderView::AppendScene(NiScene* )<br><br><br>3. 调用NiViewRenderClick::AppendRenderView(..)添加NiRenderView对象<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>4. 设定NiViewRenderClick的渲染目标<br><br>&nbsp;&nbsp;&nbsp;1) 将内容画到NiAVObject对象上<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a. 创建NiRenderTargetGroup对象来设定渲染目标:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a) 获得NiAVObject的NiTexturingProperty属性中的BaseTexture对象,&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b) 获取BaseTexture对象中的Ni2DBuffer数据, 并调用NiRenderTargetGroup::Create静态函数创建NiRenderTargetGroup对象.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b. 调用NiViewRenderClick::SetRenderTargetGroup(..)设定渲染目标<br><br>&nbsp;&nbsp;&nbsp;2) 将内容画到NiScene对象上<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a. 获取NiScene对象中的摄像机对象(NiCamera)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b.&nbsp;将NiCamera和NiViewRenderClick设定为相同的ViewPort大小<br><br>5.调用NiClickRenderStep::PrependRenderClick(..)添加NiViewRenderClick对象.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.cppblog.com/vibilin/aggbug/90983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-07-25 23:03 <a href="http://www.cppblog.com/vibilin/archive/2009/07/25/90983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vs2005环境下CELayoutEditor源码编译步骤体会</title><link>http://www.cppblog.com/vibilin/archive/2009/07/14/89985.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Mon, 13 Jul 2009 16:58:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/07/14/89985.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/89985.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/07/14/89985.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/89985.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/89985.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">Reference Link:&nbsp;<a href="http://www.cnblogs.com/xfxsworld/archive/2007/11/17/962532.html">http://www.cnblogs.com/xfxsworld/archive/2007/11/17/962532.html</a><br>&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;<a href="http://www.cegui.org.uk/phpBB2/viewtopic.php?t=2760">http://www.cegui.org.uk/phpBB2/viewtopic.php?t=2760</a><br><br>一. CEGUI<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 下载CEGUI源代码 <a href="http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/c/cr/crayzedsgui/CEGUI-0.6.2b.zip">http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/c/cr/crayzedsgui/CEGUI-0.6.2b.zip</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 下载CEGUI 依赖包 <a href="http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/c/cr/crayzedsgui/CEGUI-DEPS-0.6.0-vc8.zip">http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/c/cr/crayzedsgui/CEGUI-DEPS-0.6.0-vc8.zip</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. 解压CEGUI, 并将CEGUI依赖包解压到CEGUI目录下<br>&nbsp;&nbsp;&nbsp; (如CEGUI解压后的路径为C:\CEGUI-0.6.2, 则将CEGUI 依赖包解压到C:\CEGUI-0.6.2\下)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.在我的电脑\属性\高级\环境变量中新建一个用户变量，变量名是CEGUI，变量值是CEGUI的解压目录, 将在编译CELayoutEditor时起作用.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. 编译CEGUI<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1)编辑CEGUI-0.6.2\makefiles\premak\config.lua,&nbsp;将TINYXML_PARSER =&nbsp;false 改为 TINYXML_PARSER =&nbsp;true, 这样编译CEGUI工程时,将生成<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CEGUITinyXMLParser_d.dll(这个dll文件,将在运行CELayoutEditor时被载入)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2)执行CEGUI-0.6.2\makefiles\premake目录下的build_vs2005.bat文件,会生成一个CEGUI.sln文件<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3)打开CEGUI.sln,&nbsp;开始编译<br><br>二. wxWidgets<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;&nbsp;下载wxWidgets源代码&nbsp; <a href="http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/l/la/laharplot/wxWidgets-2.8.10.tar.gz">http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/l/la/laharplot/wxWidgets-2.8.10.tar.gz</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp; 解压wxWidgets,&nbsp;并建立环境变量：在我的电脑\属性\高级\环境变量中新建一个用户变量，变量名是WXWIDGETS，变量值是wxWidgets的解压目录<br><br>&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;3.&nbsp; 因为wxWidgets默认并不是OPENGL, 而由于我们的CEGUI默认是使用OPENGL来渲染的, 所以编译前需要修改几个地方.<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)&nbsp; Open&nbsp;$(WXWIDGETS)\include\wx\msw\setup.h&nbsp;and&nbsp;replace&nbsp;<br><img alt="" src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img alt="" 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;Code:&nbsp;<br><img alt="" 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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;wxUSE_GLCANVAS&nbsp;0&nbsp;&nbsp;<br><img alt="" 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;WITH&nbsp;Code:&nbsp;<br><img alt="" 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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;wxUSE_GLCANVAS&nbsp;1&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2)&nbsp; Open&nbsp;$(WXWIDGETS)\lib\vc_lib\mswud\wx\setup.h<br><br><img alt="" 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;Code:&nbsp;<br><img alt="" 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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;wxUSE_GLCANVAS&nbsp;0&nbsp;&nbsp;<br><img alt="" 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;WITH&nbsp;Code:&nbsp;<br><img alt="" 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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;wxUSE_GLCANVAS&nbsp;1&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4. 编译 注意要选择&#8220;Unicode Debug&#8221;和&#8220;'Unicode Release&#8221;方式. (编译CELayoutEditor时用到相关的dll和lib)<br><br>&nbsp;三.CELayoutEditor<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 下载CELayoutEditor源代码(使用SVN下载) <a href="https://crayzedsgui.svn.sourceforge.net/svnroot/crayzedsgui/CELayoutEditor/trunk">https://crayzedsgui.svn.sourceforge.net/svnroot/crayzedsgui/CELayoutEditor/trunk</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 解压后打开CELayoutEditor\vc++8\CELayoutEditor.sln, 选择Tools/Opintion../VC Directories/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1）在Include Files下增加$(CEGUI)\dependencies\include&nbsp;&nbsp; $(CEGUI\include&nbsp; $(CEGUI)和$(WXWIDGETS)\include\<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2）在Library Files下增加$(CEGUI)\dependencies\lib $(CEGUI)\lib 以及 $(WXWIDGETS)\\lib\vc_lib<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. 开始编译<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.)&nbsp;选择Project/Properties/Link/Input,&nbsp;检查是否已经添加了opengl32.lib glu32.lib glaux.lib,&nbsp;如果没有就要添加,否则就会出现链接错误<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.) 选择Project/Properties/Bulid&nbsp;Eents/Post-Bulid&nbsp;Event/Command Line，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将原有的命令中的路径添加双引号,(注意最后一行的输出路径已经被添加了双引号)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replace :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy $(CEGUI)\bin\CEGUIBase_d.dll $(CE_LAYOUT_EDITOR)\bin\debug /Y<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;With :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy "$(CEGUI)\bin\CEGUIBase_d.dll" "$(CE_LAYOUT_EDITOR)\bin\debug" /Y<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.)&nbsp;正式开始编译<br>&nbsp; </p>
<img src ="http://www.cppblog.com/vibilin/aggbug/89985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-07-14 00:58 <a href="http://www.cppblog.com/vibilin/archive/2009/07/14/89985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>