可跨平台C++开源图形图像框架:openFrameworks
博客参考:https://www.hahack.com/codes/openframeworks-intro/#%E4%BB%80%E4%B9%88%E6%98%AF-openframeworks 和 https://www.cnblogs.com/freeblues/p/5754158.html
什么是 openFrameworks
openFrameworks(以下简称 oF) 是一个开源的、跨平台的 C++ 工具包,它的设计目的为开发创造过程提供一个更加简单和直观的框架。openFrameworks
设计的初衷不是为计算机专业人士准备的, 而是为艺术专业人士准备的, 就像 Processing
一样.
oF 的强大之处在于,它不仅是一个通用的胶水(glue),同时它还封装了多种常用的库,包括:
- OpenGL、GLEW、GLUT、libtess2、cairo - 用于处理图形;
- rtAudio、PortAudio、OpenAL、Kiss FFT、FMOD - 用于音频的输入、输出和分析;
- FreeType - 用于字体显示;
- FreeImage - 用于图像存储和载入;
- Quicktime、GStreamer、videoInput - 用于视频播放和截取;
- Poco - 用于开发网络应用;
- OpenCV - 用于计算机视觉;
- Assimp - 用于读入 3D 模型。
这些库虽然遵循着不同的规则和用法,但 oF 在它们基础上提供了一个通用的接口,使得使用它们变得很容易。除此之外,oF 的另一亮点在于它具有很好的跨平台特性。目前它支持 5 种操作系统(Windows、OSX、Linux、iOS、Android)以及 4 种 集成开发环境(XCode、Code::Blocks、Visual Studio、Eclipse)。
安装和配置 oF
下面介绍如何在 Windows下安装和配置 oF 。
超级简单的代码结构
其实 openFrameworks
最值得称道的是它的代码结构极其简单, 假设你的项目名为 myOF
, 那么代码结构如下:
#include "myOF.h" //--------------------------------------------------------------
void myOF::setup(){ } //--------------------------------------------------------------
void myOF::update(){ } //--------------------------------------------------------------
void myOF::draw(){ } //--------------------------------------------------------------
void myOF::keyPressed(int key){ } ...
如果你有过使用 Processing
的经验, 就会感觉非常熟悉, 没错, 这些函数跟 Processing
中的含义完全一样.
setup
在程序启动时执行一次;draw
在程序启动后每秒执行60次(该频率可设), 用来绘制图形;update
跟draw
一样, 每秒执行60次, 把需要更新的代码放在这里;keyPressed
处理按键事件;- 还有处理鼠标事件的一系列函数, 这里就不赘述了.
为什么会使用这种代码结构? 因为 openFrameworks
原本的设计目的就是要让非计算机专业的人士通过编程来创造各种计算机视觉/图像/视频/声音艺术, 就像 Processing
的设计目标一样, 所以它才会搞成这种简单易用但是功能强大的形式.
环境配置
openFrameworks plugin for Visual Studio
Before you're able to use openFrameworks with Visual Studio, you have to have Common Tools for Visual C++ 2017 installed, otherwise you'll get an error message later on. To install, go to File > New > Project and choose Visual C++ in the installed templates section. There now should be an option to install the tools, if they aren't already. Select it, confirm with 'OK' and follow the instructions.
From Visual Studio, go to Tools > Extensions and Updates. Select online and search for openFrameworks and install the plugin.
That will allow you to use File > New > Project... to create new openFrameworks projects and the contextual menu on any project to later add and remove addons
Example这个文件夹下边包含各种应用,也是学习、参考of的开始
- 开启VS2017,打开example下的任何一个工程,找到后缀名.sln的文件,双击开启
- 编译、运行即可
可跨平台C++开源图形图像框架:openFrameworks的更多相关文章
- 介绍一个非常好用的跨平台C++开源框架:openFrameworks
介绍一个非常好用的跨平台C++开源框架:openFrameworks 简介 首先需要说明的一点是: openFrameworks 设计的初衷不是为计算机专业人士准备的, 而是为艺术专业人士准备的, 就 ...
- 开源框架 openFrameworks
转自:https://www.cnblogs.com/lidabo/p/9134174.html 此处仅供学习,版权属原作者: 作为一个图形图像方向的研究生,我经常都在和 OpenGL .OpenCV ...
- 介绍一个开源的 C++ 开发框架 openFrameworks 。
作为一个图形图像方向的研究生,我经常都在和 OpenGL .OpenCV 等多种 C++ 库打交道.这些库遵循着不同的规则和用法:另外,为了让自己的程序具有更多的交互能力,编写界面也是一个家常便饭的工 ...
- 值得推荐的开源C/C++框架和库
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...
- 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架
20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...
- HMS Core图形图像技术展现最新功能和应用场景,加速构建数智生活
[2022年7月15日,杭州]HUAWEI Developer Day(华为开发者日,简称HDD)杭州站拉开帷幕.在数字经济不断发展的今天,开发者对图形图像的开发需求更加深入和多样化,从虚拟环境重构到 ...
- 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲
[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 一.概述 经过一个多月晚上的时间,终于把开源物联网通讯框架ServerSuperIO成功移植到Windows10 IOT上, ...
- 二十三、【开源】EFW框架Web前端开发之常用组件(FusionCharts图表、ReportAll报表等)
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- 8 个优秀的 Linux 图形图像及色彩工具
8 个优秀的 Linux 图形图像及色彩工具 1. 硬件色彩分析器LPROF LPROF 是一个用于创建设备兼容,如相机.扫描仪.显示器的ICC兼容型材的颜色分析器.这些配置提供跨设备的色彩一致性.他 ...
随机推荐
- 使用Maven简单配置Mybatis
1.新建一个Maven项目 2. 在pom.xml中进行配置,在pom.xml中配置的时候,需要网速好,当网速不是很好的时候,是加载不出Jar包的. 代码如下所示. <project xmlns ...
- java 8 新特性之Stream的排序/分类
Stream简介 Stream是Java8提供的一个新的API,它位于java.util.stream包下.Stream API提供了一种新的方式来对Java集合进行操作,这种操作方式极大的提高了Ja ...
- ballerina 学习十七 多线程编程
并发&&多线程开发对于日常的处理是比较重要的,ballerina 支持的模式有work fork/join async lock 基本workers 参考代码 import balle ...
- 基于http协议的加密传输方案
最近公司需要通过公网与其它平台完成接口对接,但是基于开发时间和其它因素的考虑,本次对接无法采用https协议实现.既然不能用https协议,那就退而求其次采用http协议吧! 那么问题来了!在对接的过 ...
- Spring4源码解析:BeanDefinition架构及实现
一.架构图 首先共同看下总体的 Java Class Diagrams 图: 二.具体类实现 2.1 AttributeAccessor 接口定义了一个通用的可对任意对象获取.修改等操作元数据的附加契 ...
- git push 免密码
git push 免密码 通用情况 使用ssh协议 git add 使用tab键自动补全的中文文件名乱码 jupyter notebook 创建密码 git push 免密码 通用情况 1.使用文件创 ...
- const 补充
char const* ptr1const char * ptr2char * const ptr3 看到这三个const作何感想 其实const比较好理解的是const 后面整体是不能改变的(整体的 ...
- hBuilder培训资源视频教程汇总
DCloud对开发者的学习支持分3个层面:官方文档.三方专业培训.网友经验分享 DCloud的精力主要在做产品,配套的文档也会一直完善好.但专业的培训还不是DCloud能做好的,在HTML5中国产业联 ...
- EMF与GEF
基于Eclipse的编程架构 类似的场景大家基本都见过: JBPM--流程插件 Mule---ESB插件
- 并发包学习(三)-AbstractQueuedSynchronizer总结
J.U.C学习的第二篇AQS.AQS在Java并发包中的重要性,毋庸置疑,所以单独拿出来理一理.本文参考总结自<Java并发编程的艺术>第五章第二节队列同步器. 什么是AbstractQu ...