日更第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?
- 开源
- 简单
- 先进
开源
开源,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
破解自己整!
于是,明天见!