30
OpenGL ES pour le développement d’applications géospatiales sur Android Mathieu Ouellette Développeur / spécialiste en géomatique [email protected] Vision Géomatique | Novembre 2014

OpenGL ES pour le développement d’applications géospatiales sur Android

Embed Size (px)

DESCRIPTION

Plusieurs API cartographiques sont disponibles pour les développeurs Android. Toutefois, dans le cadre de certains projets, il n’est pas toujours possible de les utiliser, et ce, pour différentes raisons (ex : type de licence, absence d’une fonctionnalité donnée, etc.). Il est heureusement possible de développer soi-même une application cartographique en ayant recours à OpenGL ES (Open Graphics Library for Embedded System), une API de rendu graphique 2D et 3D disponible sur Android. Cette présentation consiste en une introduction à OpenGL ES. Différents points seront abordés, tels que les scénarios d’utilisation, les concepts de base propres à OpenGL ES, les principales classes, etc. Des exemples avec des données géospatiales seront aussi présentés. Enfin, des références utiles seront fournies pour ceux et celles qui désirent débuter avec l’API OpenGL ES sur Android.

Citation preview

Page 1: OpenGL ES pour le développement d’applications géospatiales sur Android

OpenGL ES pour le développement d’applications géospatiales sur Android

Mathieu OuelletteDéveloppeur / spécialiste en géomatique

[email protected]

Vision Géomatique | Novembre 2014

Page 2: OpenGL ES pour le développement d’applications géospatiales sur Android

Plan

q Qu’est-ce que OpenGL ES et pourquoi l’utiliser?

q Exemples

q Quelques concepts

q Développer avec OpenGL ES sur Android

q Références utiles

But: simplement présenter OpenGL ES sur Android et son potentiel pour la géomatique

Page 3: OpenGL ES pour le développement d’applications géospatiales sur Android

Plusieurs SDK géo pour Android…

Page 4: OpenGL ES pour le développement d’applications géospatiales sur Android

… mais avec certaines contraintes!

Page 5: OpenGL ES pour le développement d’applications géospatiales sur Android

OpenGL ES à la rescoussedes développeurs!

Page 6: OpenGL ES pour le développement d’applications géospatiales sur Android

OpenGL ES en une diapo

Quoi? Open Graphics Library for Embedded Systems

Pour faire quoi? Rendu graphique (3D)

Qui? Khronos Group

Appareils cibles? Téléphones, tablettes et autres appareils portables

Utilisé par qui? Industrie du jeu vidéo, etc.Très fort potentiel pour la géomatique

Page 7: OpenGL ES pour le développement d’applications géospatiales sur Android

Quoi faire avec OpenGL ES?

Page 8: OpenGL ES pour le développement d’applications géospatiales sur Android
Page 9: OpenGL ES pour le développement d’applications géospatiales sur Android

Apache Licence 2.0https://code.google.com/p/gdc2011-android-opengl/

Page 10: OpenGL ES pour le développement d’applications géospatiales sur Android

Skybox (à la Google Street View)

Creative Commonshttp://freezurbern.deviantart.com/art/Ocean-Skybox-402457935

Page 11: OpenGL ES pour le développement d’applications géospatiales sur Android

Basé sur une version modifiée du code de Learning OpenGL ES 2 for Android (Kevin Brothaler, The Pragmatic Bookshelf )

Page 12: OpenGL ES pour le développement d’applications géospatiales sur Android

Réalité augmentée + géospatial

Sensors (capteurs)

Page 13: OpenGL ES pour le développement d’applications géospatiales sur Android

Réalité augmentée + géospatial

Sensors (capteurs)

Creative commons – image Dhatfieldhttp://commons.wikimedia.org/wiki/File:Utah_teapot_simple_2.png

Page 14: OpenGL ES pour le développement d’applications géospatiales sur Android

Concepts / développer

Page 15: OpenGL ES pour le développement d’applications géospatiales sur Android

Android Open Source ProjectOpenGL ES library

Open specificationSpécification API

implémente

Page 16: OpenGL ES pour le développement d’applications géospatiales sur Android

OpenGL ES dans Android

Page 17: OpenGL ES pour le développement d’applications géospatiales sur Android

SDK, ou NDK,telle est la question

Page 18: OpenGL ES pour le développement d’applications géospatiales sur Android

Android SDK Android NDK

Java C/C++

Performant Performant++

Plus simple Plus complexe

Page 19: OpenGL ES pour le développement d’applications géospatiales sur Android

OpenGL ES 1, ou 2,ou 3, telle est la question

74,7%

25,3%

En date du 3 novembre 2014

Creative commons – Android Developers Dashboardhttp://developer.android.com/about/dashboards/index.html#OpenGL

Page 20: OpenGL ES pour le développement d’applications géospatiales sur Android

Concepts: en terrain connu!

vertex

rasterization

géométri eRGB

ligne

point

coordonnées

projection

transformation

Page 21: OpenGL ES pour le développement d’applications géospatiales sur Android

Géométries (primitives)

q Point

q Ligne

q Triangle

Creative CommonsOpenGL ES | Android Developershttp://developer.android.com/guide/topics/graphics/opengl.html

Page 22: OpenGL ES pour le développement d’applications géospatiales sur Android

Pipeline graphique

Crea

tive

Com

mon

sht

tp:/

/com

mon

s.wik

imed

ia.o

rg/w

iki/F

ile:B

ritish

_Ste

el_p

ipel

ine,

_Cal

dico

t_Le

vel_

-_ge

ogra

ph.o

rg.u

k_-_

6890

97.jp

g

Pipeline

Page 23: OpenGL ES pour le développement d’applications géospatiales sur Android

Vertex, fragment et rasterization

Page 24: OpenGL ES pour le développement d’applications géospatiales sur Android

Shaders

Vertex Shader Fragment ShaderGénère la position finale de chaque vertex

Génère la couleur finale de chaque fragment (modèle RGB)

Programmés en GLSL (OpenGL Shading Language)

Indiquent au GPU comment effectuer le rendu graphique

Page 25: OpenGL ES pour le développement d’applications géospatiales sur Android

Pipeline simplifié

Lecture des vertex Vertex Shader Assembler lesprimitives

Rasterization desprimitives Fragment Shader ...

Frame Buffer Le rendu est faitsur l'écran!

Page 26: OpenGL ES pour le développement d’applications géospatiales sur Android

Classes clés

GLSurfaceViewImplémentation deGLSurfaceView.RendererGLES20

Creative CommonsOpenGL ES | Android Developershttp://developer.android.com/training/graphics/opengl/touch.html

Page 27: OpenGL ES pour le développement d’applications géospatiales sur Android

Aller plus loin

Page 28: OpenGL ES pour le développement d’applications géospatiales sur Android

Quelques livres

Page 29: OpenGL ES pour le développement d’applications géospatiales sur Android

Quelques sites

q Khronos Groupwww.khronos.org/opengles/

q API guides de Androiddeveloper.android.com/guide/topics/graphics/opengl.html

q Training sur Androiddeveloper.android.com/training/graphics/opengl/index.html

Page 30: OpenGL ES pour le développement d’applications géospatiales sur Android

Merci! Questions?