最近有人叫我編譯這個渲染引擎,據說很難編譯,我編譯無數代碼,一般別人的代碼拿來編譯都很難受,因為作者的機器跟我的機器配置上都有些不痛,可能會丟了什么庫之首先上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++還是比較基本的,更能接近底層,還要好好提高,給點意見,有什麼方向去學去做,
指條路給小弟走。
最後感謝各位能看看我的屁話。留不留言沒關係,對你有幫助的話心裡感激過就行了(臭美了一次)。前輩就請你多多指點了,都說過是菜菜鳥了,別不好意思給你寶貴的意見。