您的位置:首页 > 运维架构

OpenFrameWorks 第一章

2016-05-12 00:20 507 查看

认识OpenFrameWorks的文件夹

想要做的跨平台,那么有个严谨的目录结构,不过分吧

Openframeworks包含如下文件夹:

addons、apps、examples、libs、export、projectGenerator-vs等等以及一些文件

【建议先读README.md,在这里面有包含比较完整的文件介绍】



examples文件夹

这个文件包含了几乎所有方面的简单例子,想要更深入的了解,还是有必要每个例子都看一下。简单介绍一下

1、3d:这个例子介绍了基本的3D图形学和3D数学函数的使用,包括光照以及各种效果

2、addons:这个文件夹中包含各种各样OF的拓展插件,可以用来帮助OF做更多好玩的东西

3、communication:这个文件夹包含OF通过串口通信和各种外设进行通信。类似Arduino、树莓派等等,大多数通过USB串口通信

4、empty:这个文件夹是一个空项目,是开始学习OF最简单的工程,你可以通过拷贝它来开始你任何的OF项目

5、events:这个文件夹用来演示OP各种内置的事件,比如按键、定时器等,当然也包含一些外部自定义的事件

6、gl:这个文件夹包含了一些比较先进的二维和三维图形学例子,比如 FBO(OpenGL帧缓存对象(FBO:Frame
Buffer Object)、VBO 和Shader

7、graphics:这个文件夹演示了基本的二维图形学的功能,比如加载图片、旋转缩放等等

8、gui:这个文件夹将演示如何添加用户图形界面,比如按钮、滑动条、复选框等

9、math:这个文件夹演示了OF处理perlin噪声(Perlin噪声可以用来模拟自然界中的噪声现象。由于它的连续性,如果将二维噪声中的一个轴作为时间轴,得到的就是一个连续变化的一维函数。同样的也可以得到连续变化的二维图像。该噪声可以用来模拟人体的随机运动,蚂蚁行进的线路等)、简单的粒子系统、以及适量数学的相关问题

10、sound:这个文件夹讲解了如何使用OF进行声音的播放、处理以及录制等相关问题

11、video:这个文件夹介绍了OF如何播放视频、处理每一帧视频数据以及从相机中实时抓取视频的操作

虽然这里面的例子,在下面的讲解中大部分我们都会讲解到,但是还是强烈建议你运行一遍。一方面可以感受一下OF的魅力,另一方面也可以看看他是不是真的适合你进行开发。

app文件夹

这个文件是用来存放我们自己开发的工程的,你可以在这个文件夹下创建你自己的文件夹。这里面已经包含了myApps文件夹,你可以把新建的工程放到里面,前期还是建议大家放到这里面,毕竟这个里面的路径、链接库都是处理好的。如果你创建到外面,可能在编译时候会有提示找不到库文件。

当然,这只是对于新手来说的,如果你的编程能力比较强,创建到哪里都没问题。

addons文件夹

这个文件夹包含各种OF的外部扩展插件,当你需要添加外部扩展插件时候,你需要把插件放到这个文件夹中。这个在后面我们再进行讨论。

工程中文件夹的结构

每个OF工程的文件夹都有相似的结构,我们以pointCloudExample这个工程为例。打开文件夹你可以看到

#bin文件夹:这个文件夹用来存放可执行文件(也可能是库文件,或者包含一些DLL,这个取决于你的系统)如果你编译了这个工程,你会发现该文件夹中有一个pointCloudExample_debug的可执行文件,其后的_debug就是你在工程中选择的编译调试模式,这个模式允许你设置断点,进行逐步调试。

【断点调试:指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下】

项目在Debug模式下变异比较缓慢,所以如果你想项目变异的速度快一些,可以选择Release模式下进行编译。

同样,在这个文件夹下面,你会找到data文件夹。这个文件夹下面用来存放如下内容:图片、视频、xml文件以及其他你的工程需要的文件。OF的工程默认以这个文件夹来加载或者存放数据。

#src文件夹:这里面用来存放我们需要的.h头文件.cpp源文件,其中有OF默认的文件,也可以包含我们自己写的各种文件

#其他项目:在windows下,VS开发中这里面会包含.sln文件以及其他相关用VS进行打开的文件,对我们没什么影响,这里就不再解释了。

项目代码结构

我们要开始有趣的部分了。OF的项目,在src文件夹中至少包含main.cpp,testApp.cpp和testApp.h这三个文件夹

【注意:如果一个函数或者类以OF开头,那说明它属于Openframeworks或者OF的插件,比如ofPoint, ofImage, and ofSetColor().比如ofxXmlSettings等等】

mian.cpp

在C++项目中,必须有一个.cpp文件中定义了main()函数。这个函数是整个工程的起始点。在OF中main()包含扎mian.cpp中。这其中最重要的部分就是:

ofSetupOpenGL( &window, 1024, 768, OF_WINDOW );

这个函数ofSetOpenGL()告诉OF系统需要创建一个宽1024像素高768像素的虚拟屏幕,最后的OF_WINDOW意味着要以窗口的形式创建屏幕。如果你需要全屏,可以设置参数OF_FULLSCREEN,那么这个项目就会全屏运行。

举个例子,如果你需要你的项目以1920X1080像素全屏运行,你就可以修改这个函数为

ofSetupOpenGL( &window, 1920, 1080,
OF_FULLSCREEN);

通常你没有必要修改main.cpp文件,因为屏幕尺寸分辨率可以再testApp.cpp文件中进行修改

【注意:在main()函数中,大多数的OF函数都不会起作用,因为路径以及一些初始化还未完成。所以,最好还是不要动main.cpp文件,把要做的工作在testApp.cpp中完成】

testApp.h

这个文件以#pragma once 开头,这是一条编译器命令,意思是这个文件应该在所有的.h文件的最前面编译。紧接着是#include "ofMain.h" 这个.h文件包含了OF最核心的类和函数。之后申明了testApp类,继承自OF的基类ofBaseApp:

#pragma once

#include "ofMain.h"

class ofApp : public ofBaseApp{

public:
void setup();
void update();
void draw();
///...
}
好累,今天先写到这吧。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: