最近有人叫我编译这个渲染引擎,据说很难编译,我编译无数代码,一般别人的代码拿来编译都很难受,因为作者的机器跟我的机器配置上都有些不痛,可能会丢了什么库之首先上Luxrender的官网,一般的开源项目都有个什么文档之类的东西,一般也会教怎么去编译代码。找找还真有,文档写得太他妈精辟了,就一点点,这也符合我的风格,少说明简单。
类的一大堆问题,有时可能是编译器的不同,有可能有出现什么符号没定义之类的问题。所以编译代码都是很难受的事情。耗时还耗精力。
闲话不扯了之间正题。
Luxrender 官网:http://www.luxrender.net/en_GB/index
编译的文档:http://www.luxrender.net/wiki/index.php?title=Building_on_Windows
据说我的机器还是WindowsXP所以找Windows下的文档。
然后按它说的方法去干。
1.下载TortoiseHG
2.安装好后在某个盘里面新建个文件夹,这谁都会。我的文件夹名就叫Luxrender
3.然后选中那个文件夹<Luxrender>右击。鼠标移动到TortoiseHG,会发现有个叫Clone…的东西,点击
4.然后再source path(也就是源路径)里面输入http://src.luxrender.net/lux/
5.在destination(也就是目标路径)里面输入 BASE/lux (其实BASE可要可不要,只是lux文件跟windows和luxrays要在同一级)。
6.然后点击Clone(克隆)就可以了
7.然后就是等待
8.等待
9.再等待
10.等它完成了,然后我们还是依照3的做法,选中文件夹<Luxrender>移动到TortoiseHG,然后Clone…
11.在source path (源路径)里面输入 http://src.luxrender.net/windows/
12.在destination (目标路径)里面输入BASE/windows (保证windows文件夹跟lux同级就可以了)
13.点击Clone之后等吧
14.完成后再按照3的做法选中文件夹<Luxrender>右击移动到TortoiseHG上然后Clone
15.在source path 里面输入http://src.luxrender.net/luxrays/
16.在destination 里面输入 BASE/luxrayse (保证luxrays跟lux同级就可以了)
17.然后点击Clone就可以开始无限的等待
18.等都完成了之后,就打开你的Visual Studio 2008的Command prompt,VC2005的你尽快装个2008吧,VC2005难受死你。~_~
19.然后CD到你的windows文件夹。懂cd的跳过去:一般打开 Command prompt上的默认路径是你的Visual Studio的安装路径。比如我的是在D盘,但是我的Luxrender在G盘所以要换盘,在黑屏上输入 G: 。如果你的Luxrender在E盘就输入 E: 。如此类推。然后就是 cd G:\luxrender\BASE\windows\ 我的是这样,如果你的luxrender文件夹是在E盘里面的SRC文件夹中就输入 cd E:\SRC\luxrender\BASE\windows\。
20.接着你会看到你的windows文件夹中有个叫做 getdeps.bat 的文件。在黑屏上输入 getdeps
21.接着又是选择什么的反正getdeps就是把所有的luxrender需要的类库之类的都下载下来,然后解压到一个叫做deps的文件夹里面,deps文件夹是在Luxrender\BASE\文件夹中,也就是跟你的lux、windows、luxrays同一级。
22.Get完之后就是导入注册表,双击windows文件夹里面的build-vars.reg,然后确定导入就行了。其实它就是把像LUX_WINDOWS_BUILD_ROOT这样的环境变量设置一下。当然你也可以自己一个一个设置。
23.接下来的事情就是build你下下来的东西 (<deps\>下的东西build一下,比如boost)。在你的Command prompt 里面输入build-deps-x86.bat。(惭愧我还是用32位的WindowsXP)。你不要尝试使用cmd.exe去build,难受的是你。
24.在无尽的等待回来后,你觉得差不多了,但是厄运才刚刚开始……..
开始编译
1.然后就是编译,进入BASE/windows然后打开lux.sln
2.编译肯定不会成功的,但是要一边编译一边看有什么问题。
问题:
1.出现isatty()找不到
加入#include <io.h>
将isatty改成 _isatty()
2.环境变量没设置,会有这个问题的,所以加上它提示的环境变量
3.Yacc返回错误,说系统找不到某个东西。要把 BASE/windows/Projects里面的那个project文件(.vcproj)用文本文件打开然后将"$(InputDir)/$(InputName)-hxx.cpp"的反斜杠(/)去掉。有几个文件要改这个的。当你遇到了就改一下。就是这个问题。
4.moc.exe找不到,就是QT没有编译好。打开visual studio 2008 的Command prompt 打开,然后cd到QT的根目录比如我的是G:\Luxrender\BASE\deps\x86\qt-everywhere-opensource-src-4.6.2输入configure -debug-and-release -opensource -platform win32-msvc2008完成之后在输入nmake
5.miss python31.lib
拷贝 python31.lib
From
G:\Luxrender\BASE\deps\x86\Python-3.1.2\PCbuild\
To
G:\Luxrender\BASE\deps\x86\Python-2.6.6\PCbuild\
6.miss libboost_python-vc90-mt-lib
create foulder <python2> in
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage
copy
libboost_python-vc90-mt-lib
libboost_python-vc90-mt-1_43.lib
libboost_python-vc90-mt-gd-1_43.lib
libboost_python-vc90-mt-gd.lib
from
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python3\lib\
to
G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python2\lib\
应该来说你就可以全部编译过去了。
摘要: 如果你认为三流学校的人没资格在园子里发表看法,不要点开看了。
如果你认为无关技术的不应该发在首页精华,也不要点看看了。
如果你认为发在首页精华的都是关于”超高“技术含量的,不要点开看了。
如果你看了,然后觉得我说得不对,请你不要人身攻击,我怕我受不了到时赖你就不好了。
阅读全文
关于造轮子的问题,褒贬不一,我是赞成造轮子的,很多时候我们没有必要再去造一个已经存在的轮子,这是贬造轮子的重要的看法,我觉得没什么不对的,如果是要立刻用到实际中去,而且时间上很赶的时候造一个轮子出来不是什么好事情。但是造轮子也有很多好处,比如能学到很多东西,可以参见vczh的关于造车轮,虽然没有将所有造车轮的好处统计起来,但是很有参考价值。当然你可以去看看国外的大学教程,他们本科生的任务大多就是造个车轮出来。比如MIT:操作系统课程就是写个操作系统出来,数据库课程就是写个数据库出来,图形学就是写个raytracer(光线跟踪器)出来。当然还有很多,比如Stanford:计算机网络就是用UDP实现TCP的功能,写个路由协议,图形学就是做一个软件openGL,等等,所以造轮子(再造轮子)是很有实践价值的,而且很多一流学校就是这么干的。很多时候如果想创造轮子的话再造轮子所获得的经验和能力的提高是很有价值的。
那如果你肯定了再造轮子的好处那就多帮造轮子的人说点好话,当然也说明再造轮子的的限制,不然误人子弟。但是如果你肯定了再造轮子的好处,你想加入再造轮子的大军那你该怎么办呢?
这点其实我也在想,如果看到这篇文章而又很有欲望表达自己的看法的前辈留下你的建议。在这里我也表达一下我的看法。
建议一:书
如果我们都想造轮子,但是苦于没有经验而且对轮子的构造很不熟悉,很多时候我们只好放弃这种想法。如果有一本书教你怎么去造这个轮子的话说不定你的轮子就造出来了,而且还不差。所以如果想造一个轮子,很常用的方法就是找一些相关的书籍。优点是结构完整而且描述清晰,而且还很系统(国内人写的书大多不好,所以还是先去找找有没有国外人写的书,老外写的书看得还比较爽)。缺点是大多时候书都比较理论实践的东西少,而且对我们造轮子来说书上的那种结构不是很适合造轮子,如果是大部头书的话还很快就把你的意志给削弱了。所以书不是万能的,我看过一定数量的书,但是到头来还是没有太大的提高。
建议二:课程
对于大多书学生来说这条是最好的。其实大多数学生都是很想学习的,苦于没有人指导加上老师无聊,很多时候学生搞到最后都不想学了。如果你是一个学生,如果让你去造一个轮子出来,想想那是世界上最牛的轮子(转得最快),那是让人激动的,学生学起来也很有劲头。所以造轮子最好的方式是去找一些课程,而那门课程是教你怎么造轮子的,按造那个课程的方式先去造一个出来,然后再想想自己的轮子怎么造,然后你的轮子又是另一个最牛的轮子(转得快不说,还省材料)。优点:系统化,理论实际相结合,而且很多时候那些老师已经帮你完成了一些工作,适合菜鸟级别的人物---不如说我。缺点:还没有找到,如果非得说有缺点就是:让你见识了一个最牛的轮子,让你觉得你自己独立造的轮子没有技术含量,让你放弃了想法。
建议三:现成系统
我们讨论的是再造轮子,所以这个轮子必然已经存在了,我们仿这个轮子去造一个不就行了。通过分析和比较,使用别人的轮子的时候想想别人底层是怎么做的,怎么设计的,意淫一番之后总结出经验,然后造自己的轮子。而且造一个比原来更加小强(小而强大)的轮子,功能完整,耗费资源少,使用简单-----那不就是我们想要的吗?缺点就是可能要有些经验。
建议四:论文
如果你是一个骨灰级的轮子玩家这点你应该是清楚的。看论文是一件很痛苦的事情,很多时候我们的理论基础没有论文的作者好,或则论文作者的基础跟你的不一样(比如他是学物理的,而我们是学计算机的),所以看不懂论文,直接结果就是你的轮子造不出来。所以还是要很有经验和理论基础。
建议五:开源软件
开源是一个好东西,首先它是免费的,再者可以看到代码。这点我不用说了,找到了相似的开源代码,读一读,肯定有收获。
总结或者想法:
造轮子肯定不是一件简单的事情,没有恒心就不要造轮子了,而且会花费一些时间。当然如果你很想造轮子而且你确定你有一定的时间(不用太多)你就去造吧。国内的开源软件和基础软件不好,说不定我们这代造了一些轮子之后,国内的基础软件就好了。
很多时候如果你没有头绪,你就写点代码吧,古人写字静心,我们为什么不能写代码静心呢?说不定你写着写着轮子的框架就出来了,再写着写着轮子就造好了。
虽然上面我都说了点,但是很多情况下你找不到你想要的资源,可以尝试问一下别人,说不定他能给你很好的建议---这个建议可能就一句话。
很奇怪,我在这个blog里面居然不想写一些关于技术的东西,都是在瞎扯一些关于自己的事情,可能是我自己的技术还没有到家吧,感觉用blog就用写一些有用的东西,可以给一些认识的或则不认识的人看。今天跟高中同学瞎扯了一下,讨论用不用微博之类的东西,后面扯到blog。我个人认为qqzone是做用来写一些发泄的话,写技术的东西就不是太好了,不过也是见仁见智的问题。有一点我是确定的:我不会在blog里面说话泄愤,最好就讨论一些比较实在的问题。
居然讨论一些实在的问题,那我就讨论一些大学教育的问题。自己是个大学生,所以对这个问题还是比较在意的,当然会说一些不好的东西,纯属讨论,不要太认真。我是学软件工程的,不过别人问我学什么的我大多都说是计算机的,可能有写人不太在意软件工程和计算的的差别,但是我觉的说计算机比较有底气-----因为我觉得在学校里面我唯一学到的是有关于计算机的知识,软件工程?算了吧跟本没有什么软件工程。
更深入的去看我的专业-----软件工程,其实我觉得软件工程根本就不用学,像我们学的一堆软件工程的课程:软件工程导论、面向对象软件工程、个人软件过程和小组软件过程、CMM,基本上我认为这些对我来说就是狗屎。都是讨论怎么去管理和开发软件和提高软件质量的东西,有人会问这些不是都很好吗?我们深入点去看看这些东西。首先:软件工程讲的是软件开发的过程。一些前辈开发的很多软件然后总结了一些经验,然后用这些经验去指导开发更多的软件。这就是软件工程了。很浅显的事情,但是问题就出现在这里了。当我想进一步去学习经验的时候发现经验就这么点-----瀑布模型、迭代模型........还有很多,当深入下去就是一些可维护性、可扩展性、高安全性什么的,这些东西对我来说能懂吗?我想试问一下各位?
我不是在这说这课程的不好,但是这对我来说没有意义。你试想一个只写过一些小程序的学生来说你搞那么多开发方式,搞那么多什么性什么性的有意义吗?接着我们就面向对象软件工程了。对面向对象有了解的人多少能说出点东西来,面向对象的思维方式是很好的,但问题也出现在这里-------你跟我讲面向对象我能听懂吗,比如低耦合、高内聚?对于没有接收过大型软件开发(甚至小型)的人能跟着你的思路走吗?你最起码告诉我为什么吧,但是没有。我大部分的课程都只是在教我什么是什么样的,没有教会我为什么要这样,这样有什么好处,这样有什么坏处。
当我还没有喘气的时候UML又来了,软件需求来了,软件测试来了.........搞得跟狼来了似的。UML于我何用?软件需求于我何用?软件测试于我何用?软件过程于我何用?对于这些课程我都是应付算了,不是我不好学,只是这些东西学了有何用?有人就说了:“这些东西在实际中很有用,要学好。”但我想问问实际中怎么有用了?其实我是承认这些东西在实际中很有用,但是我就算学得再好其实都没有太大意义,你教会了我画很多图,教会了我怎么去发掘需求,教会了我怎么去测试,其实教会的只是理论,根本没有让我去实践,比如UML,你总得给我个说明要做什么样的系统,需求是描述好的,然后我用UML去表现我的设计。在比如软件需求,你总是要给个人给我需求吧?------事情的实际是我自己定义需求。在比如测试吧,你总要给东西给我测试对吧?最终的结果是我什么都没学到,就算我很努力了。
在我们专业我算是学得比较好的,我很努力,但是跟国外的学生比,我还不如他们的一年级学生。我一个国外留学回来的老师,他说:“国内的研究生还不如国外本科一年级的学生”。
有时候很无奈,如果你让我用这些时间这些精力去学其他的你说会变成什么样?比如语言,我最先学的是C++,如果那个博导老师要我踏踏实实的写HelloWorld可能我早就有这种水平了,但是他没有,他让我们捣鼓那些难懂的MFC。结果我C++纯粹自学。如果我的数据结构不是天天听老师讲数据结构而是听一节课理论,然后他定义接口让我去实现这些数据结构,我就不用到大三了连个排序也只能写冒泡。如果那个该死的计算机网路不是只讲理论而是让我看看什么是光缆、什么是交换机、怎么去用TCP/UDP去做一些好玩的事情,我也就不用再去学一遍网络编程技术。太多如果了。
简单的总结一:1、大多大学生不是泡妞就是打网游,还有个别天天YY的,不是专心学习的大有人在,我想大学生找不到工作是应该的,因为你根本就没能力。如果专心学习的找不到工作那是你命不好,想开点吧。2、我很怀疑现在大学还能教出一流的学生来吗?这点我很怀疑。3、现在上课做作业基本上是应付,难道不是吗?你会觉得那是你应该做的事情吗?我想你不是觉得,因为上课很无聊,作业没有太大意义。这在所有专业都是一样。4、天大地大,考试最大(我是地大的(中国地质大学)),难道不是吗?有两种情况你的成绩但会很好-----一种是你的卷面成绩很高,另一种是你跟老师关系很好(我用过后一种)。当然有个别老师的课程不是这样。5、别老是批评大学跟社会脱节,其实学生不想,老师不想,只是结果是这样----原因是现在大学大多很功利,要改变,你改变社会吧,我想你改变你的想法比较实在一点。6、虽然我上面说的都是自己专业的,但是你去问问其他专业,情况是一样的,为什么?------都是中国特色的大学生(如果你不信,你问问其他专业的)。
讨论完了,到这写完了,但是我很犹豫要不要发表,明显我是要发表的,但是会有很多人拍我。说我这不对那不对,但是你说吧不要太认真,大家当吹牛好了。毕竟踏踏实实做事才是最重要的。
我是一位大二學生,在武漢的中國地質大學讀軟件工程。
在大一的時候開始就學習語言。開始是計算機導論,主要是Java語言,當時聽得很起勁,但Java是什麽、計算機我自己都不知道,我那是侯連電腦都不太會用。我們就沒寫過程式。講了一大堆,沒懂什麽。雖然老師有演示,但基本的操作沒有教想自己寫寫代碼都不知道怎么寫。
接著我們又開始學C++(注意我們沒有學C !)。教c++的老師是一位老程序員了。開發了20幾年了,是做GIS的,是我們學院院長開的公司的副總,也是我們軟件工程系的主任。能力和技術都是沒的說的。講語法講編程,但是我就是不懂,他給我們講程序設計,你說我們連int、long、float都不懂的人連程序是什麽都不知道你說程序設計有用不?我們c++講了10節課20個學時,到期末課程設計的時候盯著電腦發呆。什麽也沒做出來。
平時這門課是有上機操作的,但是一上來就是一個win32的程序,VisualStudio是強大啊,框架都出來了,我就不知道那些自動生成的是什麽意思。每次上機操作我都是把工程建好了,然後就盯著電腦屏幕開始發呆,慢慢發呆,直到兩個小時后。
老程序員是不同啊,程序設計、調試、測試等等一大套來了,我懂嗎?我不懂,我就連VisualStudio的那些menu都不知道是什麽意思,跟別提它強大的功能了。學期末的課程設計是用MFC做畫圖程序。MFC那就更強大了,那就更不懂了,最後別說程序設計,就連代碼都不會寫,所以我到現在c++都只是會在VisualStudio上點鍵鼠。
接著在大一的下半學期開接著學c++,還是那位老程序員,可以用高深莫測來形容他,MapGIS底層開發是他做的,拿過很多國家的獎。神州6號神州7號用的GIS軟件就是他開發的MapGIS,強大吧。但是他是第一次教本科生,我們也算幸運的了,人家第一次教本科生就是我們,他一直都只教研究生。還是10節課共20個學時,他也很認真,經常給我們答疑。但是真的太高深了,還是Win32,MFC。講什麽封裝、繼承、多態,不怕說實話我懂的那些道理(吹牛的說一句:我還是比較聰明的,什麽物理競賽化學競賽數學競賽我還是比較強的,不過現在都忘光光了),
但是試想想一個代碼不超過300行的程序要用到這些嗎?我現在還沒寫到超過300行的程序呢。還有什麽模板、操作符重載,please kill me。我不懂,我相信很多人都不懂,就算開發了幾年的了,不過我現在懂了,懂了不代表會用啊,是,我不會用,基本上我就用不到。沒做過項目我用它幹嘛?不過老實說我還是受益匪淺的。畢竟人家是位很好的教師,很好的程序員,只是我的操作能力不行,還不太懂。
在大二的上學期,那就豐富了,數據結構與算法、數據庫、軟件工程導論等等。老實說我沒好好學,沒學好。希望我的後輩要好好努力,把C/c++學好,把數據結構、算法、數據庫學好,老師講的不好,你就去問他,問到你懂為止,不要害羞,不然以後像我這樣你就知道死字怎么寫。老實說大二上還是學到很多東西的,最起碼知道然來程序是這么一回事。還會調試了。但是希望教書了不要只教書上的,多手把手教。記得課程設計的時候有位研究生輔導過我,我到現在還感激他呢,他教會了我什麽叫調試,手把手的教我寫代碼,調試。我才懂那些道理。
現在是大二下了,也過了一半了,學了Java,重新開始學一樣,不過我還是很感興趣的,Java可以做很多事,也方便多了,我現在基本是用記事本寫Java的,可以更直觀的理解算法和程式。到以後就可能不會因為人是要進步的,要做點大一點的程式。不能停留在黑屏的時代。不然就回到DOS那個年代吧。現在發現程式是那么好玩的東西,裡面有很多很好玩的、很有意思的、很先進的東西在。
努力學習。應該是好好學習天天向上。
總結:
1。c++沒學好,以後努力點好好補一下。有建議的提提,無論高手菜鳥都行,因為我是菜菜鳥。
2。程序寫不好,以後多寫點,有好玩的小項目比如開源的介紹介紹,或者有什麽純粹玩玩的項
目想找個免費勞動力可以找我。
3。对界面不太喜欢,可能是不会的缘故,在努力努力,看看会不会喜欢上,介绍点资源给小弟,
小弟不甚感激。
4。好像比較喜歡Java,可能會向Java里高級的方向去走,各位前輩指點一下,我還是比較迷茫,
介紹點好的方向,給點好的資料給小弟,小弟就此謝過各位了。
5。C、C++還是比較基本的,更能接近底層,還要好好提高,給點意見,有什麽方向去學去做,
指條路給小弟走。
最後感謝各位能看看我的屁話。留不留言沒關係,對你有幫助的話心裡感激過就行了(臭美了一次)。前輩就請你多多指點了,都說過是菜菜鳥了,別不好意思給你寶貴的意見。