effulgent

与梦齐飞翔
posts - 26, comments - 37, trackbacks - 0, articles - 14
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2008年5月16日

     摘要: python学习备忘  阅读全文

posted @ 2008-08-04 14:56 易颖 阅读(529) | 评论 (0)编辑

    最近要选择开发工具来做我的一个游戏系统,最终在MFC + CPP、C# + 托管CPP + CPP、wxWidget + CPP、Python + wxPython + CPP四种解决方案中选择了最后一种,第一种是目前最常见的解决方案,因为很多现在的游戏开发者以前或多或少都用过MFC,第二种为我们目前项目所用,GB工具也使用了这个框架,非常的稳定自然,wxWidget + CPP框架则是Unreal的做法,呵呵,毫无疑问是为了跨平台,而我要另辟蹊径,使用Python + wxPython + CPP结构,目前我还没有看见任何游戏系统用这个框架,优点就是python的简洁灵活的语法,快速的BOA+wxPython界面开发,缺点就是不知道wxpython界面是否稳健,boost.python黏合CPP效率是否满足要求.不管它,做了再说.

    首先要建立开发环境,下载了win32版本的python2.5.2 binaries,我暂时不想编译Python Debug版,wxPython版本win32-unicode 2.8.8.0-py25,CSDN下的,BOA版本好像是0.6.1,依次安装以上三个版本,我为了怕麻烦都安装在默认目录.完毕后运行BOA,tools菜单下设置python解释器,新建个wx.App试试,运行OK,学习就看BOA帮助,绝对通俗易懂,半天就能学会,剩下在就是boost.python,下最新的boost_1_35_0,解压到c:\,弄个bjam,有现成的下bjam.exe,自己编译没那功夫,方便起见把bjam.exe放到c:\boost_1_35_0目录下,现在我们要编译boost.python,其他库就略过了,要不然要编译个把小时(大部分的类是不需要编译的,包含头文件就可以用了。判断某组类是否需要编译,只需要查看c:\boost_1_35_0\libs\目录下相应的子目录里是否有一个build子目录,如果有,就说明需要编译).记得机器上要有MSVS 2005,然后在c:\boost_1_35_0目录下建如下批处理文件:

    SET BOOST_ROOT=c:\boost_1_35_0
    @REM 这里改成你自己的PYTHON目录
    SET PYTHON_ROOT=c:\Python25
    @REM 改成你自己的PYTHON版本
    SET PYTHON_VERSION=2.5
    bjam -sBOOST_ROOT=. -sTOOLS=msvc-8.0 --with-python "-sBUILD=debug release multi/single
static/dynamic"
    (以上方法完全适用与默认安装所有程序的朋友,其他朋友可能要设置一些环境参数,具体我就不知道
了,bjam的用法请参考boost帮助文档,确实很难看,一点也不傻瓜化)

    保存双击运行,一堆warning,不用管,检查下只要没有error就行,大概1分钟左右boost.python编译完毕,到c:\boost_1_35_0\bin.v2\libs\python\build\msvc-8.0\下去找编译完毕的lib和dll,默认文件名应该是boost_python-vc80-mt-gd-1_35.dll和boost_python-vc80-mt-1_35.dll,前者是DEBUG版本,现在要写个python扩展测试下是否可以用.
#include <boost/python.hpp>
#include <iostream>

#pragma comment(lib, "boost_python-vc80-mt-1_35.lib")

void show()
{
 std::cout << "This is C++ Code" << std::endl;
}


BOOST_PYTHON_MODULE(PyExt)
{
 boost::python::def("show", show);
}
有三点需要注意.

1:BOOST_PYTHON_MODULE(PyExt)的字符与DLL文件名要相同.
2:DLL文件后缀改成PYD.
3:boost_python-vc80-mt-1_35.lib与DLL文件名不要修正,因为在BOOST.PYTHON里用宏已经固定了,可能在bjam配置文件里可以修改那个默认名.
 

>>import PyExt
>>PyExt.show()
This is C++ Code 

   显示结果如上你就成功了!最近同事老是跟我推荐Object C与COCOA一起开发原型,稍微看了下工作流程,确实冗余很少,程序简洁,但关键是程序只能运行在MAC OS上,而且C本身冗余比较多,不过苹果的势力确实很强,苹果的思想也非常的好,彻底体现了KISS原则.简单并且人性化,而当前很多软件好像并不追求这个,而是反复强调技巧,比如BOOST我就很不喜欢他的风格,它想把一些问题简单化,但做法却不很不优雅.最近一直在追求冗余最少最人性最简单的开发工具和开发方法,始终没有我特别满意感到惊艳的.

posted @ 2008-07-31 19:51 易颖 阅读(142) | 评论 (0)编辑

     摘要: 可编程图形硬件的迅猛发展,让高质量实时体渲染图形成为可能,火焰,烟雾,大气效果,云的渲染变得越来越快,这篇文章既包含科学领域应用,如医疗成像,也包含一些游戏中的特效应用。  阅读全文

posted @ 2008-06-18 11:23 易颖 阅读(129) | 评论 (1)编辑

     摘要: Crysis道路系统  阅读全文

posted @ 2008-06-05 18:40 易颖 阅读(143) | 评论 (1)编辑

     这几天碰到好几件烦闷的事,比如搬家,比如工作遇到的问题,加上上海天气潮热,更让我浮躁万分。投影器的编码,折腾了我两天,怎么弄都得不到正确的结果,最后一个不小心发现在SHADER中把一个float4写成了float3,好生让我郁闷,一个变量类型让我浪费了差不多一天时间。本来在网上允诺别人说这周完成魔兽争霸的角色动画,看来不得不延期了,因为本职工作有点忙,道路生成还是不能走捷径,必须老老实实实现贴花功能,投影器几何裁剪已经让我痛苦一次了,这次的几何体的裁剪会让我更痛苦,因为要考虑非矩形内的几何裁剪,细节很多,很烦细节,但细节决定一切,郁闷。唯一让我开心的事就是俺家咪宝的工作终于敲定了,而且都是西门子,伟创力等大公司找她,让她应付不暇,不知道答应哪个公司好,咪宝英语和专业知识都有了长足的进步,特此贺过。

posted @ 2008-05-29 16:46 易颖 阅读(56) | 评论 (0)编辑