Book Image

Cinder - Begin Creative Coding

By : Krisjanis Rijnieks
Book Image

Cinder - Begin Creative Coding

By: Krisjanis Rijnieks

Overview of this book

<p>Cinder is one of the most powerful professional grade C++ creative coding frameworks out there. It is open-source and peer-reviewed, meaning that there are experienced professionals behind its developmentand that every development step is taken seriously. Its philosophy is based on the capabilities of the operating system it is used for - Cinder will take the best from every OS and hardware you choose to work on.</p> <p><em>Cinder - Begin Creative Coding</em> will let you take your previous creative coding experience to a higher and also more demanding level. It will show you the Cinder way of using the most used creative coding functions for drawing, animation, interaction and allow you to do much more in terms of performance and cross-application-compatibility.</p> <p>Starting by downloading Cinder and setting up the development environment, we will work through some of the most widely used topics in creative coding by creating and discussing simple sample applications.</p> <p>Throughout this book we will deal with relatively simple topics like basic drawing, basic animation, basic 3D, interaction, loading files, playing back video files, applying built in and custom effects. Then going through to more advanced topics like how to use Cinder for a generative projection mapping project by using Syphon technology and how to connect Open Sound Control enabled applications for receiving and sending data and commands.</p> <p><em>Cinder - Begin Creative Coding</em> will bring your craziest ideas closer to the core of your computer by using the pure power of C++.</p>
Table of Contents (19 chapters)
Cinder – Begin Creative Coding
Credits
About the Author
About the Reviewers
About the Reviewers
www.PacktPub.com
Preface
10
Talk to the User – Adding Interactivity and UI Events
Index

Applications


The following functions form the base of your Cinder application:

  • setup()

  • update()

  • draw()

We use setup() for the preparation, update() for calculations in the run loop, and draw() for drawing on the screen. You can use the shutdown() method to do something (clear memory, store data, or communicate with remote server) before our application closes. Remember that your main Cinder application class should derive from the BaseApp class and that you should implement the methods in the class declaration first.

void YourApp::setup() {
  // setup goes here
}

void YourApp::update() {
  // prepare data
}

void YourApp::draw() {
  // draw
}
void YourApp::shutdown() {
  // do something before the app closes
}

If you want to change the initial window size or other initial parameters of the application, use the prepareSettings() method (do not forget to declare this method first):

void YourApp::prepareSettings( Settings * settings ) {
  settings->setWindowSize( 800, 600 ); // set window to 800x600 px
}

Then, there are a couple of useful functions that you can use during setup and runtime.

cinder::app::getWindowWidth()

The preceding function returns the application window width as an int value.

cinder::app::getWindowHeight()

The preceding function returns the application window height as an int value.

cinder::app::getWindowSize()

The preceding function returns the application window size as a Vec2i value.

cinder::app::getFrameRate()

Sometimes, it is necessary to know the current frame rate of the application. The preceding function returns it as a float value.

cinder::app::getElapsedSeconds()

The preceding function returns the number of seconds that have passed since the application has started as a double value.

cinder::app::getElapsedFrames()

The preceding function returns the number of frames that have elapsed since the start of the application as an int value.

console()

Use the preceding function for debugging, for example, console() << "debug text" << std::endl;.

isFullScreen()

The preceding function returns true, if the application is in the fullscreen mode, false if not.

setFullScreen( bool fullScreen )

The preceding code sets the fullscreen state by passing true or false.

To make these functions work, you have to import the AppBasic header file as follows:

#include "cinder/app/AppBasic.h"