Cinder Creative Coding Cookbook - Dawid Gorny - E-Book

Cinder Creative Coding Cookbook E-Book

Dawid Gorny

0,0
39,59 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Cinder is one of the most exciting frameworks available for creative coding. It is developed in C++ for increased performance and allows for the fast creation of visually complex, interactive applications."Cinder Creative Coding Cookbook" will show you how to develop interactive and visually dynamic applications using simple-to-follow recipes.You will learn how to use multimedia content, draw generative graphics in 2D and 3D, and animate them in compelling ways. Beginning with creating simple projects with Cinder, you will use multimedia, create animations, and interact with the user.From animation with particles to using video, audio, and images, the reader will gain a broad knowledge of creating applications using Cinder.With recipes that include drawing in 3D, image processing, and sensing and tracking in real-time from camera input, the book will teach you how to develop interesting applications."Cinder Creative Coding Cookbook" will give you the necessary knowledge to start creating projects with Cinder that use animations and advanced visuals.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 314

Veröffentlichungsjahr: 2013

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Cinder Creative Coding Cookbook
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Getting Started
Introduction
Creating a project for a basic application
Getting ready
How to do it…
How it works...
There's more...
Creating a project for a screensaver application
Getting ready
How to do it…
How it works...
Creating a project for an iOS touch application
Getting ready
How to do it…
How it works...
Understanding the basic structure of an application
Getting ready
How to do it…
How it works...
There's more...
See also
Responding to mouse input
Getting ready
How to do it…
How it works
There's more...
Responding to key input
Getting ready
How to do it…
How it works…
There's more...
Responding to touch input
Getting ready
How to do it…
How it works…
There's more...
Accessing files dropped onto the application window
Getting ready
How to do it…
How it works…
There's more…
Adjusting a scene after resizing the window
Getting ready
How to do it…
How it works…
Using resources on Windows
Getting ready
How to do it…
How it works...
There's more...
Using resources on iOS and OS X
Getting ready
How to do it…
How it works...
There's more...
Using assets
Getting ready
How to do it…
How it works…
There's more…
2. Preparing for Development
Introduction
Setting up a GUI for tweaking parameters
Getting ready
How to do it…
How it works...
There's more...
Buttons
Panel position
See also
SimpleGUI
ciUI
AntTweakBar
Saving and loading configurations
Getting ready
How to do it...
How it works...
See also
Cinder-Config
Making a snapshot of the current parameter state
Getting ready
How to do it...
How it works...
Using MayaCamUI
Getting ready
How to do it...
How it works...
Using 3D space guides
Getting ready
How to do it...
How it works...
Communicating with other software
Getting ready
How to do it...
Sender
Listener
How it works...
There's more...
Broadcast
See also
OSC in Flash
OSC in Processing
OSC in openFrameworks
OpenSoundControl Protocol
Preparing your application for iOS
Getting ready
How to do it...
See also
Apple Developer Center
3. Using Image Processing Techniques
Introduction
Transforming image contrast and brightness
Getting ready
How to do it...
How it works...
Integrating with OpenCV
Getting ready
How to do it…
How it works…
There's more…
Detecting edges
Getting ready
How to do it…
How it works…
There's more…
Detecting faces
Getting ready
How to do it…
How it works…
There's more…
Detecting features in an image
Getting ready
How to do it…
How it works…
There's more…
If images match
Other possibilities
See also
Converting images to vector graphics
Getting started
How to do it…
How it works…
See also
4. Using Multimedia Content
Introduction
Loading and displaying video
Getting ready
How to do it…
How it works…
There's more
Creating a simple video controller
Getting ready
How to do it…
How it works…
Saving window content as an image
How to do it…
How it works…
There's more...
Saving window animation as image sequences
Recording sound visualization
Saving window animations as video
Getting ready
How to do it…
How it works…
There's more...
Saving window content as a vector graphics image
Getting ready
How to do it…
How it works…
There's more...
Saving high resolution images with the tile renderer
Getting ready
How to do it...
How it works…
Sharing graphics between applications
Getting ready
How to do it…
How it works…
There's more...
Receiving graphics from other applications
5. Building Particle Systems
Introduction
Creating a particle system in 2D
Getting ready
How to do it…
How it works...
There's more...
See also
Applying repulsion and attraction forces
Getting ready
How to do it…
How it works…
Simulating particles flying in the wind
Getting ready
How to do it…
How it works…
See also
Simulating flocking behavior
Getting ready
How to do it…
How it works…
See also
Making our particles sound reactive
Getting ready
How to do it…
How it works…
See also
Aligning particles to a processed image
Getting ready
How to do it…
How it works…
See also
Aligning particles to the mesh surface
Getting ready
How to do it…
How it works…
Creating springs
Getting ready
How to do it…
How it works…
There's more…
6. Rendering and Texturing Particle Systems
Introduction
Texturing particles
Getting started
How to do it…
How it works…
See also
Adding a tail to our particles
Getting started
How to do it…
Drawing history
Tail as a line
How it works…
Drawing history
Tail as a line
Creating a cloth simulation
Getting Ready
How to do it…
How it works…
There's more…
Texturing a cloth simulation
Getting ready
How to do it…
How it works…
Texturing a particle system using point sprites and shaders
Getting ready
How to do it...
How it works…
There's more…
Connecting the dots
Getting started
How to do it…
How it works…
Connecting particles with spline
Getting started
How to do it…
How it works…
See also
7. Using 2D Graphics
Drawing 2D geometric primitives
Getting ready
How to do it…
How it works…
There's more…
Drawing arbitrary shapes with the mouse
Getting ready
How to do it…
How it works…
There's more…
Implementing a scribbler algorithm
How to do it…
How it works…
Implementing 2D metaballs
Getting ready
How to do it…
How it works…
See also
Animating text around curves
Getting ready
How to do it…
Adding a blur effect
Getting ready
How to do it…
How it works…
Implementing a force-directed graph
Getting ready
How to do it…
How it works…
See also
8. Using 3D Graphics
Introduction
Drawing 3D geometric primitives
Getting ready
How to do it…
How it works…
See also
Rotating, scaling, and translating
Getting ready
How to do it…
How it works…
Drawing to an offscreen canvas
Getting ready
How to do it…
How it works…
See also
Drawing in 3D with the mouse
Getting ready
How to do it…
How it works…
See also
Adding lights
Getting ready
How to do it…
How it works…
There's more…
See also
Picking in 3D
Getting ready
How to do it…
How it works…
Creating a height map from an image
Getting ready
How to do it…
How it works…
Creating a terrain with Perlin noise
Getting ready
How to do it…
How it works…
There's more…
Saving mesh data
Getting ready
How to do it…
How it works…
9. Adding Animation
Animating with the timeline
Getting ready
How to do it…
How it works…
There's more…
See also
Creating animation sequences with the timeline
Getting ready
How to do it…
How it works…
There's more…
Animating along a path
Getting ready
How to do it…
How it works…
See also
Aligning camera motion to a path
Getting ready
How to do it…
How it works…
See also
Animating text – text as a mask for a movie
Getting ready
How to do it…
How it works…
Animating text – scrolling text lines
How to do it…
How it works…
Creating a flow field with Perlin noise
Getting ready
How to do it…
How it works…
Creating an image gallery in 3D
Getting ready
How to do it…
How it works…
Creating a spherical flow field with Perlin noise
Getting ready
How to do it…
How it works...
See also
10. Interacting with the User
Introduction
Creating an interactive object that responds to the mouse
Getting ready
How to do it…
How it works…
Adding mouse events to our interactive object
Getting ready
How to do it…
How it works…
There's more…
Creating a slider
Getting ready
How to do it…
How it works…
See also
Creating a responsive text box
Getting ready
How to do it…
How it works…
Dragging, scaling, and rotating objects using multi-touch
Getting ready
How to do it…
How it works…
There is more…
11. Sensing and Tracking Input from the Camera
Capturing from the camera
Getting ready
How to do it…
How it works…
There's more…
Tracking an object based on color
Getting ready
How to do it…
How it works…
See also
Tracking motion using optical flow
Getting ready
How to do it…
How it works…
There's more…
Object tracking
Getting ready
How to do it…
How it works…
There's more…
Reading QR code
Getting ready
How to do it…
How it works…
Building UI navigation and gesture recognition with Kinect
Getting ready
How to do it…
How it works…
Building an augmented reality with Kinect
Getting ready
How to do it…
How it works…
12. Using Audio Input and Output
Generating a sine oscillator
Getting ready
How to do it…
How it works…
Generating sound with frequency modulation
Getting ready
How to do it…
How it works…
Adding a delay effect
Getting ready
How to do it…
How it works...
Generating sound upon the collision of objects
Getting ready
How to do it…
How it works…
Visualizing FFT
Getting ready
How to do it…
How it works…
Making sound-reactive particles
Getting ready
How to do it…
How it works…
There's more…
Adding GUI to tweak parameters
Index

Cinder Creative Coding Cookbook

Cinder Creative Coding Cookbook

Copyright © 2013 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: May 2013

Production Reference: 1160513

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-84951-870-3

www.packtpub.com

Cover Image by Dawid Górny (<[email protected]>)

Credits

Authors

Dawid Gorny

Rui Madeira

Reviewers

Vladimir Gusev

Dofl Y. H. Yun

Acquisition Editor

Joanne Fitzpatrick

James Jones

Lead Technical Editor

Dayan Hyames

Technical Editors

Soumya Kanti

Devdutt Kulkarni

Veena Pagare

Project Coordinator

Arshad Sopariwala

Proofreaders

Maria Gould

Paul Hindle

Indexer

Rekha Nair

Production Coordinator

Aditi Gajjar

Prachali Bhiwandkar

Cover Work

Aditi Gajjar

About the Authors

Dawid Gorny is a creative coder and a creative technologist who is into computational design, art, and interaction design.

He has worked as a professional web and Flash developer for several years, then took the lead of the research and development department at a digital production house. He has worked on concepts and technical solutions for a wide variety of interdisciplinary projects involving mobile development, cameras, sensors, custom electronic circuits, motors, augmented reality, and projection mapping. His installations engage people in malls, airports, exhibition spaces, and other public venues.

He is the founder, organizer, and program director of the art+bits festival in Katowice—the encounter of art and technology.

You can find a more about his projects and experiments at http://www.dawidgorny.com

Rui Madeira is a computational designer, educator, and founder of the interaction design studio Estudio Ruim. He has been exploring and creating unique and engaging interactive experiences for cultural, artistic, and commercial purposes. His works are born from the intersection of several disciplines including illustration, animation, and interaction design. By using programming languages as the main building blocks for his works, he builds specific and adaptive systems that break apart from the limitations of traditional tools. He has participated in several projects, both collaborative and solo, including interactive performances and concerts, generative visuals for print and motion graphics, mobile applications, interactive installations, and video mapping.

He has collaborated for several institutions including the London College of Fashion, Belém Cultural Center, Pavillion of Knowledge, Portuguese Foundation of Communications, Moda Lisboa, National Ballet of Portugal, and the Monstra Animation Festival

About the Reviewers

Vladimir Gusev is a scientist turned generative graphics stage designer and producer. Vladimir Gusev received his Ph.D. from the Russian Academy of Sciences, and continued scientific research in the Ukraine (Kiev Polytechnic Institute) and the USA (Yale University). His main interest was computer molecular simulations, which led him into industrial bioinformatics and software development (molecular visualization and visual languages and platforms). His latest interest lies in theatre multimedia environments, which resulted in the production of works at the Budapest Summer Festival (Aida by G. Verdi), Anton Chekhov Moscow Art Theatre, Petr Fomenko Theatre Workshop (Moscow), and Satyricon (Moscow). He also co-founded the One Way Theater Company in New York City. Two theatrical productions with Vladimir's engagements as a videographer were nominated for the National Golden Mask Awards.

Some of the respectable institutions with which he collaborated are: The Institute of Physical Chemistry, Kiev Polytechnic Institute, Yale University, TRI/Princeton, Curagen Corporation, GraphLogic (Co-founder), Streambase, Ab Initio, Conde Nast, and One Way Theater Company.

He has also been a reviewer of several international journals on physical chemistry.

I would like to thank the creators of the wonderful Cinder framework.

Dofl Y.H. Yun is an interactive technologist with over 12 years of development experience, and he has established himself as a visionary leader in interactive design in South Korea, Hong Kong, the United Kingdom, and more recently in the USA. Much of his focus is on technologies such as computer vision, 3D depth camera sensors, and multitouch applications.

Dofl received his MA degree in Interactive Media from the London College of Communication, University of the Arts London with a thesis entitled: "Ensemble‑Interactive Musical Instruments." His MA thesis won the Experimental/Art category at the Flashforward Film Festival 2008 in San Francisco.

Since August 2009 he has been working for Firstborn, a digital agency in New York City. His recent work focuses on exploring the intersection between physical space and interaction design.

I want to especially mention the efforts of Cinder's original author and current lead architect, Andrew Bell, and would like to thank my family for their support and my friends from the CinderDome community.

www.PacktPub.com

Support files, eBooks, discount offers and more

You might want to visit www.PacktPub.com for support files and downloads related to your book.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books. 

Why Subscribe?

Fully searchable across every book published by PacktCopy and paste, print and bookmark contentOn demand and accessible via web browser

Free Access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.

Preface

Cinder is one of the most exciting frameworks available for creative coding. It is developed in C++ for increased performance and allows for the fast creation of visually complex and interactive applications. The big advantage of Cinder is that it can target many platforms such as Mac, Windows, and iOS with the exact same code.

Cinder Creative Coding Cookbook will show you how to develop interactive and visually dynamic applications using simple-to-follow recipes.

You will learn how to use multimedia content, draw generative graphics in 2D and 3D, and animate them in compelling ways.

Beginning with creating simple projects with Cinder, you will use multimedia, create animations, and interact with the user.

From animation with particles to using video, audio, and images, the reader will gain a broad knowledge of creating creative applications using Cinder.

With recipes that include drawing in 3D, image processing, and sensing and tracking in real-time from camera input, this book will teach you how to develop interactive applications that can be run on a desktop computer, mobile device, or be a part of an interactive installation.

This book will give you the necessary knowledge to start creating projects with Cinder that use animations and advanced visuals.

What this book covers

Chapter 1, Getting Started, teaches you the fundamentals of creating applications using Cinder.

Chapter 2, Preparing for Development, introduces several simple recipes that can be very useful during the development process.

Chapter 3, Using Image Processing Techniques, consists of examples of using image processing techniques implemented in Cinder and using third-party libraries.

Chapter 4, Using Multimedia Content, teaches us how to load, manipulate, display, save, and share videos, graphics, and mesh data.

Chapter 5, Building Particle Systems, explains how to create and animate particles using popular and versatile physics algorithms.

Chapter 6, Rendering and Texturing Particle Systems, teaches us how to render and apply textures to our particles in order to make them more appealing.

Chapter 7, Using 2D Graphics, is about how to work and draw with 2D graphics using the OpenGL and built-in Cinder tools.

Chapter 8, Using 3D Graphics, goes through the basics of creating graphics in 3D using OpenGL and some useful wrappers that Cinder includes in some advanced OpenGL features.

Chapter 9, Adding Animation, presents the techniques of animating 2D and 3D objects. We will also introduce Cinder's features in this field such as Timeline and math functions.

Chapter 10, Interacting with the User, creates the graphical objects that react to the user using both mouse and touch interaction. It also teaches us how to create simple graphical interfaces that have their own events for greater flexibility, and integrate with the popular physics library Bullet Physics.

Chapter 11, Sensing and Tracking Input from the Camera, explains how to receive and process data from input devices such as a camera or a Microsoft Kinect sensor.

Chapter 12, Using Audio Input and Output, is about generating sound with the examples, where sound is generated on object's collision in physics simulation. We will present examples of visualizing sound with audio reactive animations.

Appendix, Integrating with Bullet Physics, will help us learn how to integrate Bullet Physics library with Cinder.

This chapter is available as a downloadable file at: http://www.packtpub.com/sites/default/files/downloads/Integrating_with_Bullet_Physics.pdf

What you need for this book

Mac OS X or Windows operating system. Mac users will need XCode, which is available free from Apple and iOS SDK, if they wish to use iOS recipes. Windows users will need Visual C++ 2010. Express Edition is available for free. Windows users will also need Windows Platform SDK installed. While writing this book the latest release of Cinder was 0.8.4.

Who this book is for

This book is for C++ developers who want to start or already began using Cinder for building creative applications. This book is easy to follow for developers who use other creative coding frameworks and want to try Cinder.

The reader is expected to have basic knowledge of C++ programming language.

Conventions

In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.

Code words in text are shown as follows: "We can include other contexts through the use of the include directive."

A block of code is set as follows:

gl::setMatricesWindow(getWindowWidth(), getWindowHeight()); gl::color( ColorA(0.f,0.f,0.f, 0.05f) ); gl::drawSolidRect(getWindowBounds()); gl::color( ColorA(1.f,1.f,1.f, 1.f) ); mParticleSystem.draw();

Any command-line input or output is written as follows:

$ ./fullbuild.sh

New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: "clicking the Next button moves you to the next screen".

Note

Warnings or important notes appear in a box like this.

Tip

Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the erratasubmissionform link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Piracy

Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors, and our ability to bring you valuable content.

Questions

You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.

Chapter 1. Getting Started

In this chapter we will cover:

Creating a project for a basic applicationCreating a project for a screensaver applicationCreating a project for an iOS touch applicationUnderstanding the basic structure of an applicationResponding to mouse inputResponding to key inputResponding to touch inputAccessing the files dropped onto the application windowAdjusting a scene after resizing the windowUsing resources on WindowsUsing resources on OSX and iOSUsing assets

Introduction

In this chapter we'll learn the fundamentals of creating applications using Cinder.

We'll start by creating different types of applications on the different platforms that Cinder supports using a powerful tool called TinderBox.

We'll cover the basic structure of an application and see how to respond to user input events.

Finally, we will learn how to use resources on Windows and Mac.

Creating a project for a basic application

In this recipe, we'll learn how to create a project for a basic desktop application for Windows and Mac OSX.

Getting ready

Projects can be created using a powerful tool called TinderBox. TinderBox comes bundled in your Cinder download and contains templates for creating projects for different applications for both Microsoft Visual C++ 2010 and OSX Xcode.

To find Tinderbox, go to your Cinder folder, inside which you will find a folder named tools with, TinderBox application in it.

The first time you open TinderBox, you'll be asked to specify the folder where you installed Cinder. You'll need to do this only the first time you open TinderBox. If you need to redefine the location of Cinder installation, you can do so by selecting the File menu and then Preferences on Windows or selecting the TinderBox menu and then Preferences on OS X.

How to do it…

We'll use TinderBox, a utility tool that comes bundled with Cinder that allows for the easy creation of projects. Perform the following steps to create a project for a basic application:

Open TinderBox and choose your project's location. In the main TinderBox window select BasicApp as Target and OpenGL as Template, as shown in the following screenshot:Choose your project's location. The Naming Prefix and Project Name fields will default to the project's name, as shown in the following screenshot:Select the compilers you want to use for your project, either Microsoft Visual C++ 2010 and/or OS X Xcode.Click on the Create button and TinderBox will show you the folder where your new project is located. TinderBox will remain open; you can close it now.

How it works...

TinderBox will create the selected projects for the chosen platforms (Visual C++ 2010 and OS X Xcode) and create references to the compiled Cinder library. It will also create the application's class as a subclass of ci::app::AppBasic. It will also create some sample code with a basic example to help you get started.

There's more...

Your project name and naming prefix will be, by default, the name of the folder in which the project is being created. You can edit this if you want, but always make sure both Project Name and Naming Prefix fields do not have spaces as you might get errors.

The naming prefix will be used to name your application's class by adding the App suffix. For example, if you set your Naming Prefix field as MyCinderTest, your application's class will be MyCinderTestApp.

Creating a project for a screensaver application

In this recipe, we will learn how to create a project for a desktop screensaver for both Windows and Mac OS X.

Getting ready

To get ready with TinderBox, please refer to the Getting ready section of the previous Creating a project for a basic application recipe.

How to do it…

We'll use TinderBox, a utility tool that comes bundled with Cinder that allows easy creation of projects. Perform the following steps to create a project for a screensaver application:

Open TinderBox and choose your project's location. In the main TinderBox window select Screensaver as Target and OpenGL as Template, as shown in the following screenshot:Select the compilers you want to create a project to, either Microsoft Visual C++ 2010 and/or OS X Xcode.Click on Create and TinderBox will direct you to the folder where your project was created.

How it works...

TinderBox will create both a project for you and link it against the compiled Cinder library. It will also create the application's class and make it a subclass of ci::app::AppScreenSaver, which is the class with all the basic functionality for a screensaver application. It will also create some sample code with a basic example to help you get started.

Creating a project for an iOS touch application

In this recipe, we'll learn how to create a project for an application that runs on iOS devices such as iPhone and iPad.

Getting ready

To get ready with TinderBox, please refer to the Getting ready section of the Creating a project for a basic application recipe.

Please note that the iOS touch application will only work on iOS devices such as iPhones and iPads, and that the projects created with TinderBox will be for OSX Xcode only.

How to do it…

We'll use TinderBox, a utility tool that comes bundled with Cinder that allows easy creation of projects. Perform the following steps to create a project for an iOS touch application:

Open TinderBox and choose your project's location. In the main TinderBox window select Cocoa Touch as Target and Simple as Template, as shown in the following screenshot:Select the compilers you want to create a project to, either Microsoft Visual C++ 2010 and/or OS X Xcode.Click on Create and TinderBox will direct you to the folder where your project was created.

How it works...

TinderBox will create an OS X Xcode project and create the references to link against the compiled Cinder library. It will also create the application's class as a subclass of ci::app::AppCocoaTouch, which is the class with all the basic functionality for a screensaver application. It will also create some sample code with a basic example to help you get started.

This application is built on top of Apple's Cocoa Touch framework to create iOS applications.

Responding to key input

A Cinder application can respond to key events through several callbacks.

The available callbacks that get called by keyboard interaction are listed in the following table:

Method

Usage

keyDown