日更第1期-2015-1-15-openFrameworks系列第零講-跟我學習openFrameworks吧!


如標題所說,這個系列教程是 日 更!也就是說,我每天都會寫一篇新的文章。本身,我寫這系列文章是為了督促我自身的學習,

但是,說不定也可以幫到其他人的忙,所以,我選擇放到博客里來寫。任何有問題的讀者都可以回復我,或者和我發電子郵件。

考慮到估計不會有太多人看到,所以我覺得我基本可以做的有問必答吧,雖然可能答不上來......

郵箱:nerver0stop@163.com

 

那么閑話少說,進入正題。

 

這個Openframeworks系列教程的目的在於使讀者初步了解這個C++框架,並且開始可以運用它的特性做出一些有創意的應用程序。

那么,我先介紹一下OpenFrameworks。

 

什么是OpenFrameworks?

 

openFrameworks is an open source C++ toolkit designed to assist the creative process

by providing a simple and intuitive framework for experimentation.

(http://openframeworks.cc/about/)

    翻譯過來就是:openFrameworks是一種開源的C++工具集,它被設計成為一種簡單、自然的試驗用程序框架,可以協助

    設計具有創造性的應用。

       

                            (logo)

    

    由於我的日更系列教程是面對所以水平的觀眾的,我在這里稍微解釋一下這句話的意思。

    首先,如果想要電腦做些什么,實現些什么功能,你必須告訴它怎么做。而且必須十分詳盡的,完全的告訴它,不然它就會犯錯。

    於是,使用計算機的人,為了減輕自己的重復勞動,也為了減輕他人的學習成本,就將一部分指令按照特殊的規則整理起來,

    那么,每次想讓計算機做些什么的時候,你就讓它去找那些指令,它就可以自動地去完成你交給它的任務了。這種指令的集合,

    就是程序。(這里為了便於理解,和真實情況有一些出入,想詳細了解還請自學)

    

    那么,為了編寫程序,也就是編程,你就必須要學會和計算機交談,並且是用它的語言。可是計算機只能讀懂二進制1和0,

    (比如,你想表達4這個數字,你就要說100。更多有關進制的知識在以后的教程中一定會講到,不過不是現在)這對於人類

    來說真是個不小的問題。不過,最后一些聰明人還是想到了辦法——創造一種計算機和人都能讀懂的語言就好了——人要

    讀懂的話,學習就好了;計算機要讀懂,就困難些了,於是人們又給它找來了一個翻譯——編譯器。然后大家覺得這一切

    都是好的,就休息了。(openFrameworks使用的編程語言是C++,屬於高級編程語言)

     

    等等,還沒完!!就算現在有了編程語言,編程序還是件很難的事情啊!雖然有操作系統這個程序給我打基礎,但是我要

    顯示的窗口是什么類型,上面顯示什么文字,怎么獲取鼠標鍵盤輸入,又怎么在屏幕上顯示,依舊是一大堆要做啊!我只是

    想編一個簡單的小程序試試我的想法,怎么需要這么多額外的東西啊!對,所以,勤(懶)勞(惰)的人們又發明了一種東西,

    叫做“框架”。openFrameworks就是一種框架,而且是很方便的一種。

 

    計算機科學發展到現在(2015年)只不過69年,而從個人計算機普及算起(1985年)就更短了。所以,這個學科中的很多

    概念其實都是從其他學科中借鑒過來的。framework,框架,這個詞原本是用在建築學里面的(建築學的很多屬於都被借鑒

    到軟件工程里,畢竟兩者確實有一定相似之處),指的就是框架,就是你想的鋼筋、橫梁、柱子。那其實現代的建築,其

    構成就需要框架來提供支持,然后在上面進行建造、修飾,程序也是這樣。

 

    使用框架的好處是——你不用去關注你不需要的那些細節,只專注於你想做的事。事實上,這個世界上的框架真是特別特別

    特別多!尤其是JS。(我最愛的語言)而在C++這個語言上,也有很多很多的框架,比如微軟出的Win32,MFC,.NET,

    WPF,再比如開源框架OpenGL,OpenCV,游戲引擎cocos2d-x。而openFrameworks也只不過是浩如煙海的無數框架

    中的一種罷了。但是回到開始的那句話,你可能會注意到幾個關鍵詞:簡單、開源。我接下來就要講講為什么

    我要學習OpenFrameworks並且推薦你使用了。

    

            (上圖是html,即網頁所用的標記語言,嚴格上來說不算編程語言。不過web的框架真是多)

 

    為什么要使用OpenFrameworks?

 

    1. 開源
    2. 簡單
    3. 先進

 

    開源

    開源,open source,一詞的含義是開放代碼源文件,即把編寫出來的程序源代碼(用來編譯成為程序的代碼)開放的做法。

    一般,開源軟件背后都有一個維護它的組織或社區、公司,大部分都允許別人自由的修改其代碼(不過有的協議要求由此

    開發的代碼必須開源,有的則不限,openFrameworks不限使用目的)甚至幫助修改其代碼。

 

    使用開源代碼的好處是——免費。在版權意識較低的中國,可能基本所有個人用軟件都是“免費”的,但是,對於公司來說,

    或者要以正規目的發布的時候,即便在中國,也必須守規矩了。從這個意義上,使用OpenFrameworks這樣的開源框架

    就很“方便”。(不過基本框架都要變成開源的了......)

 

    使用開源的另外一個好處是——可以學到基礎知識,甚至參與其創建。拿OpenFrameworks來說,它就是許多程序員的

    共同開發下才制作出來的;有可能,在不久的將來,你將成為貢獻者中的一分子!

 

    

                         (they made OF)

    簡單

    簡單的好處就是...簡單。我認為,無論多么熟練的程序員,他都會傾向於使用最簡單的方式——即便他要構建很復雜的東西

    ——那只不過是把復雜的東西先分化為簡單的東西,再去處理它們罷了。對於編程經歷尚淺的程序員來說,能有一個合適的

    學習曲線是十分重要的,而選好一個框架,就是邁進圖形編程、應用編程等現實編程(而不是玩具式的編程)的重要一步

 

    OpenFrameworks的理念源於Processing,一種基於Java的,提供了全套開發環境即豐富庫的工具集。OpenFrameworks

    的很多設計和Processing極其接近,對於有過Processing經驗的人來說,起碼setup和update這兩個函數很有即視感。但是,

    即便沒有其實也無所謂,因為Processing編程和OpenFrameworks編程還是有着很大區別的——Processing限制的更多,

    而OpenFrameworks則有更強的拓展性。而且,Processing的學習,對於幫助學習Java並不是很有用,但是OpenFrameworks

    上的編程和C++基本沒有差別,是一個很好的切入點。

 

    

             (一個基於粒子系統的例子。我們在入門之后就會開始講粒子系統的,大概一周之后)

 

    先進

    OpenFrameworks創建於2008年,到現在僅有7個年頭,雖然在中國,它還不甚流行,但是在外國已經很有人氣了。這一方面

    是因為語言所限,比較中文文檔基本沒有(吐槽一句,官網除了英文版還有日文版......我打算把那個官方教程翻譯一下,如果

    可能最好可以用讓他們掛上去,哈哈);另一方面則是因為, OpenFrameworks其實不是專門用來做商業軟件的(可參照

    cocos2d-x,現在代碼都是中國人主導......),所以可能大家的學習熱情就不是那么高。但是,我要說, 其實OpenFrameworks

    是有做出商業軟件的潛力的。它是一個先進的框架,與現在流行技術緊密結合(kinect,arduino),而且跨平台!

 

    其實很多人都說,學習要從基礎開始——我不反對這一點。確實,有了基礎的C功底,學C++才不會在基本語法上犯糊塗;

    但是,基礎,也就意味着,是很老的技術。計算機專業最怕什么?就是跟不上時代。現在再用win32編程的人(比如上個

    學期我們的課程......)是不會有前途的。當然,我不排除它的教學意義;但是,既然你有了同等甚至更加有力的武器

    為什么不用呢?所以我在此推薦OpenFrameworks。你自然可以去學習別的,而且我覺得也必然會學習各種各樣的框架,

    那么就去學,但是OpenFrameworks用於都會是一個不壞的選擇——特別是你有了一個創意,但是並不想忙於瑣碎之事之時。

 

     

               (這個程度....你看,確實也可以做的很厲害吧;雖然我還不行)

 

    建立OpenFrameworks工程時你需要的東西

 

    約定:

      如果你上過了OpenFrameworks的官方網站並且看過了tutorial的部分的話,可能你注意到了,

      丫的都是mac上的教程啊!(請允許我情緒激動)

      

                                (其實這是Xcode)

      其實外國的程序員和設計類人員中,習慣使用Mac的人非常之多(至少比中國多),以至於很多情況下,拿Mac演示

      更加符合一般情況.....不過中國情況就不同了,我在這里還是照顧一下普通大眾——而且我也沒有Mac(T_T)——

      用Windows 7 作為我的運行環境, Visual Studio 2012作為開發環境。估計Windows我就不用解釋了......除非你

      是用手機在看,不然肯定知道。Visual Studio是微軟公司開發的集成式開發環境(IDE),你就理解為開發用的 

      軟件就好了。本來,我是喜歡體量比較小的工具的(web開發時一般會用sublime Text),但是到了C++,尤其是

      Windows上,還是用VS最好。

 

      這里說一下版本問題——of v0.84,也就是我們將要使用的版本,只支持VS2012(0.7x時支持2010,估計0.9x

      之后就是要vs2013了吧,不過2012和 2013差距到沒有那么大......至少在外型上)所以請務必下載vs2012,

      操作系統只要不是xp就好。

      

      

   (這是用VS打開一個OpenFrameworks的工程后的樣子;另外,如果樣子不同,也很正常,因為我裝了一些插件,也改了預設)

 

    最后,秉承中華民族的傳統美德,我就放一下下載鏈接:

    OpenFrameworks(v0.84):http://openframeworks.cc/download/

    

    Visual Studio2012:http://download.microsoft.com/download/B/0/F/B0F589ED-F1B7-

    478C-849A-02C8395D0995/VS2012_ULT_chs.iso

    破解自己整!

 

    於是,明天見!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM