OpenGL ES / ios. Jean-Philippe Farrugia. Jean-Philippe.Farrugia@univ-lyon1.fr

Documents pareils
Programmation MacOSX / ios

EIP 2012 Projet Livepad. Documentation technique 1.5

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Manipulation 4 : Application de «Change».

Optimiser pour les appareils mobiles

Serveur d Applications Web : WebObjects

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Accéder à ZeCoffre via FTP

BUREAU VIRTUEL. Utilisation de l application sur ipad. Guide utilisateur. Sciences Po Utilisation du bureau virtuel sur ipad 1 / 6

Panorama de l offre et des usages des tablettes

TABLETTE NUMÉRIQUE TACTILE - IPAD

Clé USB OTG PNY Duo-Link pour iphone et ipad. Mode d'emploi

Création d'un identifiant Apple sans carte bancaire (à partir d'un ORDINATEUR) - 1

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Can we trust smartphones?

À la découverte du SDK de l iphone et de l ipad

Création d objet imbriqué sous PowerShell.

Séminaire Partenaires Esri France 7-8 juin Paris Les API ArcGIS pour les smartphones

Notice d utilisation de la Base de Données des décisions du Comité Directeur National

icloud Le cloud computing d Apple

Mise en route de votre collier GPS Pet Tracker

MOBILE BANKING. Accès à vos opérations bancaires avec «BL Mobile Banking»

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Création d un service web avec NetBeans 5.5 et SJAS 9

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

domovea Portier tebis

Environnement Zebra Link-OS version 2.0

N.B. : Le mot de passe est le même pour les connexions sans fil, e-learning et Windows (laboratoires) ainsi que les adresses électroniques.

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

Point sur les solutions de développement d apps pour les périphériques mobiles

Programmation en Java IUT GEII (MC-II1) 1

Single User. Guide d Installation

Préparation d une flotte d IPADS dans une école via ITUNES

CALIPIA Synthèse 2013 de l offre Apple pour les entreprises

Utiliser iphoto avec icloud

Tutoriel pour la configuration des ipad et son «rattachement» au CG

TPs Architecture des ordinateurs DUT Informatique - M4104c SUJETS. R. Raffin Aix-Marseille Université romain.raffin-at-univ-amu.fr

FORMATION KAWET. Formation : Créer une appli mobile avec Kawet

Environnement Zebra Link-OS version 2.0

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

L'AUTHENTIFICATION FORTE EN TANT QUE SERVICE libérez-vous des contraintes matérielles

1. Base de données SQLite

Synchroniser ses photos

Avant-propos Certificats et provisioning profiles

DLTA Deploy. Une offre unique de gestion de flotte mobile pour iphone, ipad & ipod touch. La solution de gestion de flotte mobile pour ios

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

geek Soyez le de l été! PHP :HIKONB=^UZ^Z]:?k@b@g@p@a"; Découvrez Chrome, Firefox, IE, Safari Enquête écoles Diplômes : quel prix

LA GMAO ACCEDER : PRESENTATION et VISUALISATION

WACOM MULTI-TOUCH : UTILISATION TACTILE DES PRODUITS WACOM

Réinventer la sensation de lire

Programme ASI Développeur

Poste virtuel. Installation du client CITRIX RECEIVER

Problème physique. CH5 Administration centralisée

Android,iOS,W indow s Phone 8 :

Alfstore workflow framework Spécification technique

Développez vos applications pour. iphone, ipod Touch, ipad

LES TABLETTES TACTILES

Modèle Memo Pad 8 ME180A Transformer Book Trio TX201 Asus Memo Pad 7 ME173 X Asus ME102A Asus Transformer Book T100

Architecture et Extensions d ArcGIS Server

Premiers Pas en Programmation Objet : les Classes et les Objets

VIDEO RECORDING Accès à distance

Pour les futurs développeurs Sommaire

Qui ont toujours à mon côté pour me soutenir et me guider au long de ce projet.

Projet Active Object

Pour connaître les dernières informations, consultez le site Internet du produit (

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

LES TABLETTES : GÉNÉRALITÉS

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Guide de l utilisateur

RCE/OXO Nouveautés DECEMBRE ici ici ici ici

Office 365/WIFI/Courrier. Guide pour les étudiants

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration

Environnements de développement (intégrés)

SMPMKPOT=aKbKbKpK=a îéäçéééãéåí=çû^ééäáå~íáçåë= kçã~çéë=j=abbp^mm

1 ) INSTALLATION DE LA CONSOLE 2 2 ) PREMIER DÉMARRAGE DE LA CONSOLE 3 3 ) LES JOBS 4 4 ) LES ORDINATEURS 6

Stockage des machines virtuelles d un système ESXi jose.tavares@hesge.ch & gerald.litzistorf@hesge.ch

1. Découvrir l iphone 3G et 3G S

Vulgarisation Java EE Java EE, c est quoi?

Pc Portable ou Tablette tactile?

Préconisations Portail clients SIGMA

CAHIER DES CHARGES D IMPLANTATION

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Génération de code binaire pour application multimedia : une approche au vol

RESPONSABLE INFORMATIQUE

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

WORKSHOP OBIEE 11g (version ) PRE-REQUIS:

Procédure d'installation de SQL Server Express 2008

Les tablettes numériques en EPS. Repères. Les différents types de tablettes et leurs caractéristiques.

Guide de Démarrage. Introduction... 2 Scénarios pour l utilisation de votre procloud@ocim.ch... 2 Scénarios à venir :... 2

PIC EVAL Dev Board PIC18F97J60

TechSoftware Présentations

Openmoko, free your phone!

Vous allez le voir au cours de ce premier chapitre, 1. Découvrir l ipad

Contrôleur de communications réseau. Guide de configuration rapide DN

Première édition en format électronique. Parallels Desktop 7 pour Mac OS X.

Les fondamentaux du développement d applications Java

Note comparative entre les caractéristiques des tablettes numériques, smartphones et pocket PC pour la collecte de données naturalistes de terrain

des outils disponibles et des performances possibles

Guide pour la configuration d adresse

Transcription:

OpenGL ES / ios Jean-Philippe Farrugia Jean-Philippe.Farrugia@univ-lyon1.fr

Sources «Developing Apps for ios», Paul Hagerty, Stanford university. Disponible sur ituneu. developer.apple.com Sources web diverses.

ios? Système des appareils mobiles Apple iphone, ipod touch, ipad. Base BSD. Très fortement orienté objet : Héritage direct de Nextstep... Langage standard : Objective C

Développement ios Ventes 4eme trimestre 2011 : 37.04 millions! Marché colossal...

Développement ios Mobile!= Machine «classique». Mémoire limitée. Display de petite taille. Interface(s) utilisateur différentes. Contraintes de design.

Hardware iphone 5 : CPU : custom ARM v7 GPU : PowerVR SGX 543. Intégrés sur un SOC Apple A6. 1Go de mémoire centrale.

Plan Développer pour ios. Le patron Modèle Vue Contrôleur. Objective C. Une application ios OpenGL ES 2.0 Inputs et capteurs.

Plan Développer pour ios. Le patron Modèle Vue Contrôleur. Objective C. Une application ios OpenGL ES 2.0 Inputs et capteurs.

Outils nécessaires Un mac...... ou un PC avec osx installé... ios SDK. Gratuit. Un iphone, ipad ou ipod touch. Une licence de développement. Uniquement pour tester et distribuer les applications sur les appareils physiques.

Composants logiciels Objective C : L autre langage C orienté objet. Philosophie totalement différente du C++. Runtime complexe. Multiples mécanismes de communication entre objets. Sur-ensemble de C et C++.

Composants logiciels Xcode : Environnement de développement privilégié pour osx et ios. Conseillé, mais pas obligatoire. Interface builder : Construction interactive d interfaces graphiques.

Composants logiciels UIKit / CocoaTouch Framework Apple pour le développement d applications ios. Très complet : Accès au périphériques. Accès aux médias. Multi-programmation (Threads).... Philosophie Modèle Vue Contrôleur.

Plan Développer pour ios. Le patron Modèle Vue Contrôleur. Objective C. Une application ios OpenGL ES 2.0 Inputs et capteurs.

Le MVC Patron de conception classique. Très utilisé : Frameworks pour applications graphiques : Swing, OpenStep, GTK... Webkits : CakePHP, Codeigniter... Indispensable pour la programmation ios.

Philosophie générale Fonctionnement et interaction des entités : L utilisateur interagit avec la vue et envoie un message. Le contrôleur intercepte ce message. Il le convertit en action interprétable par le modèle. Le modèle agit sur les données et effectue l action attendue. Le contrôleur détecte cette action et affecte les vues en fonction.

Organisation Les objets de l application sont partagés en trois «camps» : Le modèle : représentation des données et des traitements applicables sur ces données. La vue : Eléments constitutifs de l interface graphique. Le contrôleur : contrôle la manière dont le modèle est affiché dans la vue. Construire une application : choisir dans quel «camp» sont les objets créés.

Organisation Communications entre les trois groupes limitées : Plus facile à concevoir et à débuguer.? Contrôleur? Indépendance : le modèle et la vue sont totalement indépendants. Modèle Vue ie : ils ne communiquent pas directement!

Communications Contrôleur Outlet OK Modèle OK Vue Depuis le contrôleur?

Communications Contrôleur? Modèle NON! Depuis la vue? Vue

Communications Communications Vue -> Contrôleur. Importation des méthodes du contrôleur? Non : les vues sont génériques. Deux mécanismes principaux : Target Action : la vue envoie un message ciblé au contrôleur, sans connaitre son interface. En gros : définition d un callback. Delegation : un certain nombre de fonctions (protocole) de la vue sont «déléguées» au contrôleur. Un seul délégué par vue.

Remarques Une vue ne possède pas les données qu elle affiche. ie. les données affichées ne sont pas directement accessibles! Pourquoi? Généricité, encore... Performances : une vue n affiche qu une petite partie des données. Accès via une «data source» (protocole).

Communications Contrôleur Délégation Target action Modèle Vue Depuis la vue

Communications Contrôleur? Modèle NON! Depuis le modèle? Vue

Communications Communications Modèle -> Contrôleur : Importation des méthodes du contrôleur? Non : le modèle est indépendant de l interface. Mécanismes de communication : Notifications et Key Value Observing : messages broadcast émis par le modèle.

Communications Key Value Observing Contrôleur Notification Modèle Vue Depuis le modèle

Remarque Une application ios plus complexe : Plusieurs MVC reliés entre eux. Partages (total ou partiel) des vues. Partage (total ou partiel) des modèles. Plusieurs contrôleurs : Ex : un pour iphone, un pour ipad. Règle d or : limiter les connexions inter- MVCs au minimum. Peut vite devenir illisible...

Exercice 0 Considérons un jeu de bataille navale. Dans quel «camp» placez-vous les entités suivantes? La grille de jeu (dimensions 16x16, couleur bleue). La fonction «update» qui met à jour les positions de jeu. La fenêtre de visualisation (3D avec OpenGL). Le maillage 3D des navires. Le bouton «Feu!». La fonction «tirer sur la case (x,y)».

Plan Développer pour ios. Le patron Modèle Vue Contrôleur. Objective C. Une application ios OpenGL ES 2.0 Inputs et capteurs.

Présentation Langage de programmation objet. Composé d extensions du langage C. Sur-ensemble de C et C++. Basé sur SmallTalk. Runtime complexe : Beaucoup d opérations sont reportées au runtime.

Approche Objet Principale différence entre C++ et Objective C : C++ : Principalement basée sur une hiérarchie de classe. Communication entre classes = héritage. Statique! Objective C : protocoles, messages, notifications, délégation, typage dynamique... Communications statiques ET dynamiques.

Objets Données + opérations sur ces données. En Objective C : Données : variables d instance. Opérations : méthodes. Type générique pour les objets : id. Variable générique pour tous les objets : isa Pour connaitre la classe d appartenance d une instance.

Classes : déclaration Extensions des fichiers :.h inclusion avec #import Typage fort ou faible : MyClass *myobject1; // typage fort id myobject2; // typage faible

Classes : implémentation Déclaration et implémentation des méthodes : Extension du fichier :.m ou.mm Deux types de méthodes : classe et instance. Paramètres «entrelacés» : Plus intuitif pour la lecture.

Classes : messaging Appel d une méthode = envoi d un message. Notation «bracket». Messaging multiple possible. [myarray insertobject:anobject atindex:0]; [[myappobject thearray] insertobject:[myappobject objecttoinsert] atindex:0];

Exemple @implementation MyClass - (id)initwithstring:(nsstring *)aname { self = [super init]; if (self) { } name = [aname copy]; } return self; + (MyClass *)createmyclasswithstring: (NSString *)aname { return [[[self alloc] initwithstring:aname] autorelease]; } @end

Classes : Properties Génération automatique des accesseurs. Dans la déclaration : @property BOOL flag; @property (copy) NSString *nameobject; @property (readonly) UIView *rootview; Dans l'implémentation : @synthesize flag; @synthesize nameobject; @synthesize rootview; Utilisation : avec les messages «get» et «set» ou avec «.»

Protocoles Déclaration d une interface : Ensemble de méthodes implémentables par n importe quelle classe. Utile pour la délégation. Déclaration similaire à une classe, mais : Pas de variable d instance. Pas d implémentation. @protocol UISomeClassDelegate - (void)someprotocolmethod; @end Protocole implémenté @interface MyClass : NSObject <UISomeClassDelegate>

Demo Une application ios minimale : Un modèle de bateau de guerre. Un contrôleur pour le contrôler. Une vue pour l afficher.

Plan Développer pour ios. Le patron Modèle Vue Contrôleur. Objective C. Une application ios OpenGL ES 2.0. Inputs et capteurs.

OpenGL ES Version mobile d OpenGL. Deux versions disponible dans ios SDK : OpenGL ES 1.0 (iphone 1 / 3G). OpenGL ES 2.0 (iphone 3GS/4/ ipad). Basés sur les correspondants Open GL «classique».

OpenGL ES OpenGL ES 1.0 : Pipeline fixe uniquement. OpenGL ES 2.0 : Plus de pipeline fixe. Shaders! en GLSL. Utilisation en Langage C Inclus dans une vue Objective C.

OpenGL ES 1.0 Différences principales avec OpenGL : Pas de mode immédiat. Vertex Array obligatoire. Mais supporte quand même quelques instructions pour fixer l état courant : glnormal, glcolor, glmultitexcoord. Certaines primitives n existent plus : QUADS, QUADS_STRIP, POLYGON. Textures 2D uniquement, sans mipmap.

OpenGL ES 2.0 Mipmap disponible Framebuffer objects. Shaders. Plus de pipeline fixe. Incompatible avec OpenGL ES 1.0!

OpenGL ES 3.0 Très récent (Aout 2012) Proche d OpenGL 3.0 : Multiple render target. Transform feedback. Textures 3D Instanciation. NB : Aucun device GLES 3.0 à l heure actuelle...

Les vues Open GL ES EAGLView Vue OpenGL de base. Utilisation complexe. GLKView et GLKViewController Partie de GLkit : Ensemble de fonctions permettant une utilisation plus simple de GL ES 2.0. Permet la création d un vue GL très simplement. Peut remplacer (presque) toutes les fonctions du pipeline fixe.

Exercice 1 Examinez le code donné en exemple. Où sont la vue, le contrôleur et le modèle? Le modèle MVC est il scrupuleusement respecté? Si ce n est pas le cas, corrigez! Repérez le mécanisme de délégation. Faites un affichage un peu plus joli... Faites tourner l objet avec des boutons. Peut-on afficher deux vues GL?

Plan Développer pour ios. Le patron Modèle Vue Contrôleur. Objective C. Une application ios OpenGL ES 2.0. Inputs et capteurs.

Multitouch Périphériques d entrée / sortie : différent. Ecran capacitif multi-touch : Détecte les contacts sur l écran. Capacitif : électricité statique... Ne marche pas avec un stylet ou autre.

Multitouch Accès et utilisation : Quand l utilisateur touche l écran, l application délivre un évenement à la vue. Nécessite l implémentation de fonctions de réponse (héritage de UIResponder) : - (void) touchesbegan:(nsset*)touches withevent:(uievent*)event - (void) touchesmoved:(nsset*)touches withevent:(uievent*)event {! UITouch *touch = [touches anyobject];! CGPoint tappoint = [touch locationinview:vueconcernée];! } - (void) touchesended:(nsset*)touches withevent:(uievent*)event

Motion events Détection de mouvements. Deux périphériques concernés : Acceleromètre. Gyroscope (ios > 4 uniquement). Accéléromètre : mesure l accélération! Intégration double nécessaire pour la position. Très peu précis...

Motion events Accès et utilisation Fonctionne par délégation de la classe UIAccelerometer UIAccelerometerDelegate Objet partagé : sharedaccelerometer. Fonction du protocole à implémenter : - (void)accelerometer:(uiaccelerometer*)accelerometer didaccelerate!!!!! :(UIAcceleration*)acceleration Nécessite une initialisation :! //Configure and start accelerometer! [[UIAccelerometer sharedaccelerometer] setupdateinterval:(1.0 / Frequency)];! [[UIAccelerometer sharedaccelerometer] setdelegate:self];

Motion events Plus pratique : CoreMotion. Donne des informations de mouvement en fusionnant les informations de tous les capteurs. gravity, user acceleration, rotations... Initialisation : CMMotionManager* mymotionmanager; mymotionmanager = [[CMMotionManager alloc] init]; mymotionmanager.devicemotionupdateinterval = 1.0/30; if (mymotionmanager.isdevicemotionavailable) [mymotionmanager startdevicemotionupdates];

Exercice 2 Ajouter la gestion tactile de votre application. Ajouter une détection de mouvement dans votre application. Pour ceux qui ont un device... Faites tourner l objet en penchant l appareil. Avec l accéléromètre. Avec CoreMotion.