### PLATFORMS

openFrameworks currently supports the following platforms:

# Android #

versions: 2.2+

architectures:
  * armeabi-v7a
  * x86


# Emscripten #

notes: VM


# iOS #

versions: iOS 5 - 8 (FAT Bundle with libc++ for all archs)

architectures:
  * ARMv7
  * ARM64
  * x86
  * x86_64

notes:
  * ARMv7s removed since potential performance gains not worth the binary size increase, see #3423 for more discussion
  * ARM64 supported until Xcode 6 (OS X 10.9+)
  * Apple iOS store requires 64bit support and submission with Xcode 6+


# Linux #

versions: Debian, Arch, Ubuntu, Fedora

architectures:
  * x86
  * x86_64
  * ARMv6l
  * ARMv7l
	
# Microsoft Windows #

versions: Win7 - Win10

architectures:
  * x86
  * x86_64

notes:
  * Visual Studio 2015
  * MSYS2


# OS X #

versions: 10.7 - 10.10 (FAT Bundle)

architectures:
  * x86 (with libc++)
  * x86_64 (with libc++)

notes:
  * QTKitVideo pipeline will be deprecated, but essential for 10.7 support.
  * 10.8 recommended minimum (to use Xcode 5)

---

### Android Studio

[openFrameworks](http://openframeworks.cc/) | [Documentation table of contents](table_of_contents.md)

Android Studio 2025
=======

The Android distribution of openFrameworks is setup to work with Android Studio IDE.

## Installation

Setting up openFrameworks with Android Studio is fairly straightforward. The basic steps are:

- Install the latest version of [Android Studio](https://developer.android.com/studio/index.html) (tested with Android Studio Meerkat | 2024.3.1).

###  Select the following to be installed in SDK Manager (options)
- Android SDK 36.0 (or latest) - add any older APIs if targetting
- Build Tools 36.0.0 (or latest)
- NDK 28.0.13004108 (Side by Side)
- Android SDK Command Line Tools 19.0 (or latest)
- CMake 3.31.6 (or latest)

## Install openFrameworks
- Download openFrameworks 0.12.1 or later from the [download page](http://openframeworks.cc/download/) or from [github](https://github.com/openframeworks/openFrameworks/).
- If you got openFrameworks from git: 
	- Run `scripts/android/download_libs.sh` to download libraries.
	- Use the Project Generator to generate Android Studio project files for android examples.
- In Android Studio, use **Open an existing Android Studio project** and select an openFrameworks example from the `examples/android` folder.
- It will ask you for NDK location, either put the path in `local.properties` or click *Project Structure* and select the NDK location.
- Let Android Studio download all other dependencies missing automatically.
- Build and run.

### Build and run

Press the Play button next to the `androidEmptyExample` shown in the toolbar. It will build the app and deploy it to your Android device after a few seconds (or prompt you to deploy it to a suitable emulator). If the app runs, congratulations! You have setup openFrameworks.

### Building directly with Gradle
- Can build directly in folder with ./gradlew assembleDebug
- System will need latest version of JDK for this https://www.oracle.com/us/java/technologies/downloads/#jdk23-mac

## Creating new projects

1. Use the Project Generator to generate new projects for Android Studio.
2. Open Android Studio and click **Open an existing Android Studio project**, and point to the newly created project folder.
3. Certain apps need additional permissions, for example access to camera. Add these in the `AndroidManifest.xml` file.

## Troubleshooting

- You may need to adjust the following numbers to match your installed Android Studio and Android SDK. Android Studio should offer to fix these values for you when you open the appropriate build files.

    - The Gradle version specified in `/build.gradle`
    - The `compileSdkVersion`, `buildToolsVersion`, `minSdkVersion`, `targetSdkVersion` values
        in `/addons/ofxAndroid/ofAndroidLib/build.gradle` and `/apps/myApps/androidEmptyExample/build.gradle`

- If you get strange linker errors, make sure you are using NDK version r15c. Newer NDKs might work but usually require some changes.

- If your connected device is not recognized by Android Studio, restart adb
  with `adb kill-server && adb start-server`.

- If, when synchronizing a project for the first time, clicking on the console
  messages does not solve the problem regarding a missing dependency of the
  android API (like for example Android API 22), open the sdk from the console,
   select the missing API and install it.

---

### Apps

[openFrameworks](http://openframeworks.cc/) | [Documentation table of contents](table_of_contents.md)

Apps and Examples
=================

Examples
--------
Examples are now located in the root of oF at `examples/`.  
This folder will remain as a place to work on your own apps.

Hierarchy
---------
Just remember projects in `apps/` still need to be two levels deep.  

	apps/
		mySoundApp/ 

will not work

	apps/  
		soundApps/  
			mySoundApp/  
		miscApps/  
			experiments/

will work

---

### Libraries

[openFrameworks](http://openframeworks.cc/) | [Documentation table of contents](table_of_contents.md)

Libraries
=========

openFrameworks uses a mix of the following libraries, depending on your platform.  
Find those in `libs/` folder.

[Assimp](http://assimp.sourceforge.net/)
--------
* Graphics
* BSD

Open Asset Import Library is a portable Open Source library to import various well-known 3D model formats in a uniform manner.

[Cairo](http://cairographics.org/)
-------
* Graphics
* LGPL v2.1

Cairo is a 2D graphics library with support for multiple output devices.

[FMOD](http://www.fmod.org/)
------
* Audio
* FMOD License

[FreeImage](http://freeimage.sourceforge.net/)
-----------
* Image
* GPLv3, FIPL

FreeImage is an Open Source library project for developers who would like to support popular graphics image formats like PNG, BMP, JPEG, TIFF and others as needed by today's multimedia applications.

[FreeType](http://www.freetype.org/)
----------
* Fonts
* GPLv2, FTL

FreeType designed to be small, efficient, highly customizable, and portable while is capable of producing high-quality output (glyph images) of most vector and bitmap font formats.

[GLEW](http://glew.sourceforge.net/)
------
* Graphics
* BDS, MIT

The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library. GLEW provides efficient run-time mechanisms for determining which OpenGL extensions are supported on the target platform.

[GLUT](http://www.opengl.org/resources/libraries/glut/)
------
* Graphics
* -

GLUT is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs.

[GStreamer](http://gstreamer.freedesktop.org/)
-----------
* Video
* LGPL

Streamer is a library for constructing graphs of media-handling components.

[Kiss FFT](http://kissfft.sourceforge.net/)
----------
* Audio
* BSD

A Fast Fourier Transform based up on the principle, "Keep It Simple, Stupid." Kiss FFT is a very small, reasonably efficient, mixed radix FFT library that can use either fixed or floating point data types.

[Libtess2](https://code.google.com/p/libtess2/)
----------
* Graphics
* MIT

Game and tools oriented refactored version of GLU tesselator. 

[OpenGL](http://www.opengl.org/)
--------
* Graphics
* BSD

OpenGL (Open Graphics Library) is a cross-language, multi-platform API for rendering 2D and 3D computer graphics.

[Poco](http://pocoproject.org/)
------
* Utilities
* Boost Software License

Modern, powerful open source C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems. 

[PortAudio](http://www.portaudio.com/)
-----------
* Audio
* MIT

PortAudio is a free, cross-platform, open-source, audio I/O library.

[QuickTime](http://developer.apple.com/quicktime/)
-----------
* Video
* Apple Copyright

QuickTime and the QTKit framework provide powerful services for manipulating time-based media, allowing you to add audio and video playback, capture, and encoding capabilities to your application.

[rtAudio](http://www.music.mcgill.ca/~gary/rtaudio/)
---------
* Audio
* MIT

RtAudio is a set of C++ classes that provide a common API (Application Programming Interface) for realtime audio input/output across Linux, Macintosh OS-X and Windows operating systems.

[videoInput](https://github.com/ofTheo/videoInput)
------------
* Video
* MIT

A video capture library for Windows.

---

### Linux

[openFrameworks](http://openframeworks.cc/) | [Documentation table of contents](table_of_contents.md)

Linux install
==========

Before you can use OF in linux you'll need to run a couple of scripts to install some dependencies and compile the OF library itself and the project generator.

First of all you'll need to execute the install_dependencies.sh script for your distribution which is located in `scripts/linux/distro_name/install_dependencies.sh`

For example if you are using ubuntu, from a console:

```
cd OF/scripts/linux/ubuntu
sudo ./install_dependencies.sh
```

Next if you want to use some formats like mp3 you'll need to run the install_codecs script, it's in the same folder and is run the same way as the install_dependencies one. We separate them cause mp3 and some other formats installed by the script might be protected by patents in some countries and could be problematic to use in comercial work.

The OF source code comes uncompiled so the first time you compile an example it would need to compile it to, if you go and compile any example it would compile OF as a dependency but to make that easier and catch any potential problems let's do that as a separate step:

```
cd OF/scripts/linux
./compileOF.sh -j3
```

`-j3` tells the script to use 3 cpus to compile, you can specify as many as you want but it's recommended to use the number of cores in your computer or less.

With this you can already go into any of the examples folders and compile the examples using make:

```
cd OF/examples/graphics/polygonExample
make
make run
```

Or use any of the officially supported IDEs: [qtcreator](../qtcreator/) or [eclipse](../eclipse/) both IDEs have plugins that allow to create new projects, import existing ones, add addons to them.

If you want to install the project generator, a tool that allows to create and update an OF project you'll need to run a last script:

```
cd OF/scripts/linux
./compilePG.sh
```

which will compile the command line version of the project generator and install it in your system so you can create projects from anywhere, it'll also make it possible to use the gui tool which is present in the root of the OF folder.

---

### Msys2

[openFrameworks](http://openframeworks.cc/) | [Documentation table of contents](table_of_contents.md)


MSYS2
=====

Installing msys2
----------------

First, install MSYS2 using the [one-click installer](https://msys2.github.io/) or
directly unzipping the archive from their [repository](http://sourceforge.net/projects/msys2/files/Base/x86_64/)

If you have an old install of MSYS2 (before 2018), it's recommended to do a fresh install.

If you are going to use QtCreator you should install msys2 in the default install folder, c:\msys64



Now, let's update the MSYS2 installation.
From an MSYS2 shell (it can be MSYS, MINGW32 or MINGW64), run :

```sh
pacman -Syu --noconfirm --needed
```

If some system files are updated, you may be requested to close the shell.
If that happens, close the shell as instructed and open a new one to update the remaining packages using the same command :

```sh
pacman -Syu --noconfirm --needed
```

You are now ready to install openFrameworks.


Installing openFrameworks
-------------------------

**IMPORTANT**
MSYS2 comes in 3 flavors : MSYS (msys2.exe), MINGW32 (mingw32.exe), MINGW64 (mingw64.exe).
This is really important to remember as many problems with running OF with MSYS2 come from using the wrong flavor.
**MINGW32** is the historically supported flavor.
**MINGW64** is still experimental.
So, to run oF, you must use the shell that matches your flavor - mingw32.exe for **MINGW32**, mingw64.exe for **MINGW64**.

For the following instructions, it assumed that MSYS2 is installed in `C:\msys64`.
If it has been installed elsewhere, adapt the instructions to reflect your MSYS2 installation path
It is also assumed that we are working on the 32 bits version.
If you are working with the 64 bits version, adapt the instructions to use a **MING64** shell (`C:\msys64\mingw64.exe`) and, if needed,  use `C:\msys64\mingw64\bin` in your PATH instead of `C:\msys64\mingw32\bin`.

Download and unzip the **qt creator / msys2** version of oF. 
**DO NOT INSTALL** oF in a folder having space or other special character.

Open an **MINGW32** shell (`C:\msys64\mingw32.exe` ) and install OF dependencies:

```sh
cd your_oF_directory/scripts/msys2
./install_dependencies.sh
```

Open an **MINGW32** shell (run `C:\msys64\mingw32.exe`) and compile oF libraries:

    cd your_oF_directory/libs/openFrameworksCompiled/project
    make

You can speed-up compilation using parallel build `make -j4` or the number of cores you want it to use


Setting the PATH variable
-------------------------

Setting the PATH variable is an optional step but is also the cause of many trouble.

~~As of v0.10.1, the install_dependencies.sh script does it in an wrong way!~~

### Why would you need to set the PATH variable ?

__To be able to run my oF application by double clicking on it.__

To run, the application needs to have the dll it was compiled with.
If the required dll is not found at the location of your application, Windows will traverse the folders in your PATH to find it.
If `C:\msys64\mingw32\bin` is included in your PATH, it will hopefully find the right dll.
However, it may find a dll with a matching name in a different folder that is not compatible...  
It may also happen that, after an MSYS2 update, it finds a newer version in `C:\msys64\mingw32\bin` that is also incompatible...

The solution is to copy all the needed dlls in the application folder.
This can be easily done with the command : 

```sh
make copy_dlls
```
This will also ease the installation of the application on a different computer....


__To compile oF in IDE (Qt Creator or VS Code )__

These softwares will try to detect compiler programs (gcc, make) by scanning the PATH variable.
So it's an easy way to setup up your IDE.
There may also be some settings in the IDE to configure where to find the programs.
That gives you better control.
As in the previous point, relying on the PATH variable to find the programs may result in unexpected behaviours (for example, using Windows C:\Windows\System32\find.exe instead of MSYS2 C:\msys64\usr\bin\find.exe)

It may be interesting to write a wrapper batch file to lauch your IDE where you set the PATH to use.
This way you do not pollute your PATH system-wide.

### I've decided to use the PATH variable. How do I set it ?

You can find how to set the PATH in windows here: http://www.computerhope.com/issues/ch000549.htm

You'll need to add `c:\msys64\mingw32\bin` and `c:\msys64\usr\bin` to your PATH in **that order**.
There are two ways:

1. Either add them via 'Environment Variables' from the Control Panel > System > Advanced System Settings.
2. Or you can also set the PATH from the command line: open a Windows cmd prompt and set you user PATH.
```
setx PATH "c:\msys64\mingw32\bin;c:\msys64\usr\bin;%PATH%"
```

Don't forget to logoff/logon as PATH is updated at logon.

That's all, now go to the your_oF_directory/examples folder, where you will find
the examples, and have fun!


Running examples
----------------
Compile the example (for example the 3DPrimitivesExample)

    cd your_oF_directory/examples/3d/3DPrimitivesExample
    make

At this point, `make run` to launch. 

To be able to double-click on the exe file to run it, run `make copy_dlls` (if you haven't set the PATH!)

Makefile
--------

Every example has a Makefile you can configure using the files config.make
and addons.make.

config.make: This file has options to add search paths, libraries, etc., the
syntax is the usual syntax in makefiles, there's help comments inside the file.

addons.make: if you want to use an addon which is inside the addons folder, just
add its name in a new line in this file.


Dlls
----

Windows applications compiled with msys2 need some system dlls to run. If you are going to run the application in a different machine where you don't wont to install msys2 you can run:

    make copy_dlls
	
from the msys2 terminal and it'll copy the necessary dlls to the project bin folder. Now you can copy that bin folder to any computer and it will run right away without having to install msys2.

This is still experimental so if you find any problem please [report it on github](https://github.com/openframeworks/openFrameworks/new?title=Problem%20with%20msys2%20dlls)


QtCreator
---------

With msys2 you can also use QtCreator as an IDE, you can find more information in the corresponding setup guide:

http://openframeworks.cc/setup/qtcreator

FAQ / Common problems
--------------------- 
- "I have a TLSv1_1_client_method missing error" when I double-click the exe ?"

The executable looks for ssleay32.dll and libeay32.dll and it first finds a version that doesn't support TLS v1.1. Often it happens with Intel iCls software. The solution is to move the your_msys2_directory\mingw32\bin path before the conflicting path. If the conflicting path is in the system PATH and you do not have administrative privileges, copy/link ssleay32.dll and libeay32.dll from your_msys2_directory\mingw32\bin to the executable folder.

- "I'm on a corporate network with a proxy. I cannot download packages with pacman."

You may need to set HTTP_PROXY and HTTPS_PROXY environment variables.

    From a DOS/CMD prompt :    
    set http_proxy=http://your_proxy:your_port
    set http_proxy=http://username:password@your_proxy:your_port
    set https_proxy=https://your_proxy:your_port
    set https_proxy=https://username:password@your_proxy:your_port
Don't forget to escape special characters in your password...



 

many thanks!! OFteam

---

### Osx

[openFrameworks](http://openframeworks.cc/) | [Documentation table of contents](table_of_contents.md)

OS X
====
To use openFrameworks with OS X, you need to have Xcode installed.  Then you can run the examples in apps/ by opening the .xcodeproj and clicking the "Build and Run" button.


Installing Xcode
----------------
openFrameworks is primarily developed with Xcode 4+, but may work with other versions. 

To install Xcode, you need to register as an Apple developer and download the Xcode disk image from: https://developer.apple.com/xcode/downloads/

More detailed instructions are available at:
http://openframeworks.cc/setup/xcode


Creating a new openFrameworks project
-------------------------------------
The easiest way to create a new openFrameworks project is to use the project generator: 

See [projectGenerator page](projectgenerator.md), to understand the usage of this tool.

The second easiest way is to copy one that's similar to what you want to do. 

OF Examples follow the app directory structure pattern (e.g. apps/categoryName/appName) and are grouped by topic/addon.

For example:

- Copy an example folder like: examples/empty/emptyExample/ and rename the copy to apps/examples/myApp/

- Inside the myApp/ folder rename the .xcodeproj file to myApp.xcodeproj

- Open myApp.xcodeproj

- In the sidebar, under "Targets", right click on "emptyExample" and rename it to "myApp"


The difference between Debug and Release mode
---------------------------------------------
These are two build configurations, "Debug" and "Release".

Debug is useful when developing your project, as it will provide the most information about where and why something crashed.

Release is useful when you're done developing your project. Release will create a smaller, faster app -- but it won't give you much information if it crashes.


openFrameworks resources
------------------------
If you have questions or issues, the best place to look is the openFrameworks forum: 
http://forum.openframeworks.cc/


Thanks for reading this and enjoy!
- The OF Team

---

### Projectgenerator

[openFrameworks](http://openframeworks.cc/) | [Documentation table of contents](table_of_contents.md)

projectGenerator
================

About
-----
* The tool can be used to generate project files for the platform you've downloaded (osx Xcode, Windows, etc).
* The project generator can add addons to your project, but not all addons (especially non core addons) are packaged in the right way for this.
* It assumes you will want to put your project in `OF_ROOT/apps/myApps`, but you can put your projects anywhere relative to OF, and it should work. Putting your apps in non standard paths (ie, not at a height of `../../../`) is not recommended.  Also putting your apps outside of the OF folder itself is not recommended, since that makes the relative path system more fragile.
* If you cloned the openFrameworks repo, you need to run `git submodule update --init` from inside the repo to set up the project generator.

*NOTE: If you are on linux, be sure to run the install_dependencies.sh script, which will install necessary components for this.*


Changes
-----
This project generator is new since 0.9 -- the original one in earlier OF releases only allowed you to make new projects, this one allows for updating existing projects as well as recursive updating.  


Usage
-----
It's pretty simple to make an new project, or update an existing project, in the simple mode. there are 3 things you can adjust: 

1. **Name of the project**  
This is where you set the name of the project. This creates both a folder with this name and a project file, so for example, if your name is "myCoolExample" it will generate: 
`myCoolExample/myCoolExample.xcodeproj` where the myCoolExample will have all the src / settings / etc of an empty example. 

2. **Path of the project**  
This defaults to `apps/myApps`, but it should allow you to put projects anywhere. We strongly recommend you to keep them inside this release of OF, so that if the OF release or your project get moved, or if some lower level folder gets renamed, the generated paths don't break. It's much safer to have paths that are `../../../` vs paths that have a name in them. Please note that because we also create a folder with this tool with the name of your project, the actual full path to your project will look like: 
`chosenPath/projectName/projectName.project` (where chosenPath and projectName are based on your settings, and .project is the xcode, code blocks, visual studio file that's generated).

3. **Addons**  
To use, choose addons you want to add, and/or remove ones you don't want.  Not all addons work with the PG, but all of the core addons should and if the addon doesn't work, you can tell the addon developer to take a look at it. The project generator is basically searching the file system recursively through the addons, and it's looking for things like folders that say "osx" on them, etc, so it can make decisions about what to include / exclude, etc. For more complex addons, you may need to read the documentation or reach out to the addon author for more info. Also note that not all addons are designed for every platform.

4. **Generate**  
When you hit this button, hopefully magic will happen. Some addons take a very long time to parse (such as opencv) so please be patient. If you add a lot of addons, it can sometimes take several seconds for a project to generate.  You should see a success message with the option of opening the folder or opening the project in an IDE.

Settings
-----

In the settings panel, you can update the path to the root of openframeworks.  This is the folder that is the base level, which contains "libs", "addons", etc.  There are also options for advanced mode (see below) and verbose output.  Verbose output runs the project generator w/ verbose flag, which gives a ton of details about how its adding an addon and what it's doing.


Advanced
-----

Since 0.9 the project generator features an advanced mode, which gives you additional functionalities.  You can choose other platforms for cross platform development (Note: this is useful only if you are working from the master branch or have those other templates available).  Also, it can recursively update projects, useful if you are working with a folder full of project files that you want to test in a newer version of OF. 

Technical considerations
-----

This project generator uses two tools -- a command line tool and an gui front end.  The command line tool is very powerful, and in later releases we will expose this more for the end users to install locally on their machines, etc since it is really helpful for advanced users.  For now, if you poke around the PG folders, you can find this tool (it's in slightly different locations on osx, windows and linux).  On linux this is compiled and installed for you.   This command line tool is wrapped in a gui front end which uses electron (http://electron.atom.io/).

---

### Serial

[openFrameworks](http://openframeworks.cc/) | [Documentation table of contents](table_of_contents.md)

Serial
======

There is the arduino sketch used for the serial example.  
Find it in `other/` folder.

Get it to work
--------------

2. Setup the arduino with an LED on pin 13 and get the blinking LED example to work. 
2. Then upload this code. 
3. Open the serial monitor and type the letter a.  It takes 5-15 seconds for serial i/o to respond.  You should see an LED blink and the letters ABC in the console. 
4. Then, close the monitor, take note of the port number (ie, `COM7`) and then compile the serial example, changing the com port to the right value.

---

### Table Of Contents

[openFrameworks](http://openframeworks.cc/) 

openFrameworks documentation
============================
openFrameworks is a C++ toolkit for creative coding.

Getting started
---------------
* [supported platforms](PLATFORMS.md) - A list of supported hardware and software platforms.
* [Linux](linux.md) — A guide to install on Linux environment.
* [OS X](osx.md) — A guide to install on OS X environment.
* [Android Eclipse](android_eclipse.md) — A guide to install for Android using the Eclipse IDE.
* [Android Studio](android_studio.md) - A guide to install for Android Studio IDE.
* [Code::Block](codeblocks.md) — A guide to configure Code::Block on Windows.
* [Visual Studio](visualstudio.md) — A guide to configure Visual Studio on Windows.
* [MSYS2](msys2.md) — A guide to install on Windows using MSYS2.

Usage
-----
* [Examples and Apps](apps.md) — An introduction to openFrameworks.
* [projectGenerator](projectgenerator.md) — Usage of the tool to generate projects.

About
-----
* [Libraries](libraries.md) — Details about libraries.
* [Serial](serial.md) — Details about serial communication.

More
----
* [Reference](http://openframeworks.cc/documentation) — openFrameworks reference.
* [Tutorials](http://openframeworks.cc/tutorials) — openFrameworks tutorials.
* [Forum](http://forum.openframeworks.cc) — The openFrameworks forum.

---

### Versions

#Table of versions of libraries used by OF

| Library    | default version | Win   | Mac | Linux | Android | iOS | Emscripten  | 
| ---------- |:---------------:|:-----:|:---:|:-----:|:-------:|:---:|------------:|
| Assimp     | 2.0             |       |     | _1    | -       | -   | -           |
| Cairo      | 1.10.2          |       |     | _1    | -       | -   | -           |
| Fmodex     | 4.22.0          |       |     |       |         |     | -           |
| FreeImage  | 3.15.3          |       |     |       |         |     | _2          |
| FreeType   | 2.4.4           |       |     | _1    |         |     | _2          |
| GLEW       | 1.7??           |       |     | _3    | -       | -   | -           |  
| GLFW       | 3.0.3           |       |     | _4    | -       | -   | -           |
| GLU        |                 |       |     | _7    | _6      | _5  | -           |
| GLUT       |                 | 3.7   | _8  | _9    | -       | -   | -           |
| Kiss FFT   |                 |       |     | ?libs/kiss/src | -       | -   | ?           |
| openssl    | 1.0.0a          |       |     | _1    |         |     | -           |   
| POCO       | 1.4.3p1         |       |     | _10   |         |     | 1.4.6p2 _11 |
| quicktime  |                 | ?     | ?   |       |         |     | -           |
| rtAudio    | 4.0.12          |       |     |       | -       | -   | -           |
| tess2      | latest version available |       |     | _12      |         |     | -           |
| videoInput | latest version available |       |     | ?        |         |     |             | 
| sndfile    |                 |       |     | ?     |         |     | -           |     

_1: System on linux

_2: Available via packages

_3: _1, Not used on arm linux

_4: Not used on arm linuxv6 + drag and drop patch from https://github.com/arturoc/glfw/tree/feature-dnd

_5: iphone-glu 1.0.0 http://code.google.com/p/iphone-glu/

_6: iphone-glu 1.0.0 patched to work on android, no sources available

_7: _1? Not used on arm linux

_8: OS version modified by theo to add drag and drop, no code available publicly?

_9: system but uses freeglut instead of glut

_10: patch for events which only affects headers so binaries can be compiled from original sources

_11: modified oF headers so patch is no longer necessary

_12: (not maintained anymore) patched to remove asserts, source in libs/tess2/Sources

---

### Visualstudio

# Visual Studio

## Prerequisites
- Git - [Git for Windows] (https://git-scm.com/install/windows)

## Visual Studio Installation
------------

Download and install **Visual Studio 2022** or **Visual Studio 2026**.  

We recommend the free **Community** edition.

- [Visual Studio 2022 Community](https://visualstudio.microsoft.com/downloads/)  
- [Visual Studio 2026 Community](https://visualstudio.microsoft.com/downloads/)  

During installation, select the **Desktop development with C++** workload.

## Install openFrameworks
- Download openFrameworks 0.12.1 or later from the [download page](http://openframeworks.cc/download/) or from [github](https://github.com/openframeworks/openFrameworks/).
- If you got openFrameworks from git: https://github.com/openframeworks/openFrameworks
	- Run `scripts/android/download_libs.sh` to download libraries.
	- Use the Project Generator to generate Visual Studio project files for examples.

## Libraries
------------

If missing any libraries or want to update them run the script at **vs/scripts/**
- **download_libs.sh**

## Creating a new openFrameworks project
-------------------------------------

1. Open the **Project Generator** (ofxImGui interface).  
2. Enter your **Project name**.  
3. Choose your **Project path**.  
4. Under **Platforms**, select **Windows (Visual Studio)**.  
5. Under **Template**:  
   - For **Visual Studio 2022** → leave the Template field empty (default)  
   - For **Visual Studio 2026** → select **`vs2026`** from the dropdown  
6. Click **Generate**.





## Open and Run your project
----------------------



You can run by clicking Open in IDE in Project Generator or Open Folder to access directory.

Your project solution file is located at:  
`openFrameworks/apps/[yourFolder]/[projectName]/[projectName].sln`


Double-click the `.sln` file to open it in the matching version of Visual Studio (2022 or 2026).




Press **F5** to build and run in Debug mode.

## Debug vs Release
-------------------

- **Debug** — best while developing (full error info).  
- **Release** — smaller and faster (use when finished).  

Switch between them using the dropdown at the top of Visual Studio.

## Architectures
-------------------
- Targets are x86_64 - x64 - Default Windows
- ARM64 - for arm64 processors (native arm)
- ARM64EC - a mixture of both x64/arm64 for Windows 11

## Start coding
-------------

Hit **Esc** to close the window, then edit your code in `src/ofApp.cpp` and `src/ofApp.h`.

---