Autore Topic: Consiglio su progetto opengl es c++  (Letto 2251 volte)

Offline lz91

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S I-9000
  • Sistema operativo:
    Ubuntu, Windows 7
Consiglio su progetto opengl es c++
« il: 19 Luglio 2012, 17:42:26 CEST »
0
Ciao ragazzi

quello che voglio chiedervi è un consiglio.
All'università sto frequentando Grafica al calcolatore, come progetto di fine corso bisogna presentare un gioco in opengl.
E' un progetto a gruppo è possiamo presentare anche un gioco in opengl es per android fatto in c++, percio' usando NDK  :-) .
Ora premettendo che son gran poco di opengl, la so piu' in via teorica, ci chiedevamo cosa potevamo fare.  :-P senza perderci mesi e mesi :) (abbiamo un mese e mezzo di tempo senza contare che ci sono gli esami in mezzo e le vacanze  :D )
Noi pensavamo di fare o una sfera o palla in 3d e farla muovere in un piano con i sensori del cellulare
o altrimenti volevamo fare un astronave che viaggiava tra gli asteroidi (pensavamo di farlo in 2 dimensioni).
Abbiamo gia' dato un occhiata a qualche libro e abbiamo visto che non è semplice come sembrava, ovviamente.

Secondo voi tra le 2 idee quale' la piu' "veloce" da fare astronave o sfera ? :)


Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Consiglio su progetto opengl es c++
« Risposta #1 il: 19 Luglio 2012, 17:56:35 CEST »
0
Visto che non c'è nessuna descrizione sul gameplay... assumendo che si tratti solo di movimento la sfera è più veloce.

Offline lz91

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S I-9000
  • Sistema operativo:
    Ubuntu, Windows 7
Re:Consiglio su progetto opengl es c++
« Risposta #2 il: 19 Luglio 2012, 18:51:38 CEST »
0
Non è che dobbiamo fare proprio un gioco ... dobbiamo dimostrare al prof di creare un ambientazione e di riuscire ad interagire con essa.
Il nostro intento era quello di muovere la sfera con l'accelerometro del cellulare  e magari con il touch riuscire a spostare la visuale.

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Consiglio su progetto opengl es c++
« Risposta #3 il: 19 Luglio 2012, 21:20:35 CEST »
+1
Le OpenGL-ES 2.0 non sono semplici da programmare per chi non conosce nulla di grafica 3D di base. In aggiunta bisogna saper per forza programmare gli shader, è un obbligo, la pipe-line interna non è imposta e pronta come per le 1.x. Può sembrare strano ma programmare le OpenGL in 2D, di solito, è più complesso del 3D.

In aggiunta bisogna saper programmare Android molto bene, conoscere JNI e maneggiare NDK alla perfezione.

In un mese e mezzo è difficile fare quello che avete descritto se non avete mai fatto nulla in precedenza a riguardo.

Abbandonate l'idea del gioco, al massimo tentate di visualizzare un semplice oggetto controllato dal touch o dal giroscopio (con l'accelerometro il risultato non è buono). Naturalmente dovete conosce come ruotare un oggetto 3D nel modo corretto, spero che venga spiegato a lezione.
adb logcat | tee /tmp/logcat | grep TAG

Offline lz91

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S I-9000
  • Sistema operativo:
    Ubuntu, Windows 7
Re:Consiglio su progetto opengl es c++
« Risposta #4 il: 20 Luglio 2012, 08:04:33 CEST »
0
Grazie della risposta .
Guarda le opengl es a lezione non ci son state spiegate, per il semplice motivo che siamo stati noi ragazzi a chiedere al prof se si potevano programmare con le opengl es, dato che il corso e' centrato sulle opengl. 
Penso che alcune cose siano uguali altre diverse. Mi dovro' documentare ovviamente.
La nostra idea come prima esperienza era quella di prendere una guida o un progetto gia' fatto e magari fare delle aggiunte.


Abbandonate l'idea del gioco, al massimo tentate di visualizzare un semplice oggetto controllato dal touch o dal giroscopio (con l'accelerometro il risultato non è buono). Naturalmente dovete conosce come ruotare un oggetto 3D nel modo corretto, spero che venga spiegato a lezione.

La tua idea dell'oggetto ci era già venuto in mente :) pensavamo magari di fare una sfera e applicargli un texture per simulare la terra e magari applicare una fonte di luminosità.  :-P


Volevo chiedere un chiarimento, se ho capito bene le opengl_es possono essere implementate in due modi sia in java  o in c++(NDK) vero ?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Consiglio su progetto opengl es c++
« Risposta #5 il: 20 Luglio 2012, 08:36:36 CEST »
+1
Premetto che non ho esperienza di openGL ne' di programmazione di giochi. Mi permetto di suggerirvi un approccio che minimizzi il più possibile gli ostacoli di apprendimento degli strumenti (non della materia) di programmazione, così da potervi concentrare sul risultato che dovete presentare. Per esempio, come accenna iceweasel, potrebbe essere conveniente usare le openGL 1.x e il Java (quindi non NDK), perchè rende tutto più semplice dal punto di vista dello strumento e praticamente non ha impatti sul risultato finale che deve essere ottenuto.

Provate a vedere se questo tutorial può essere un punto di partenza:
Android 3D game tutorial – Part I on Android Development
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline lz91

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S I-9000
  • Sistema operativo:
    Ubuntu, Windows 7
Re:Consiglio su progetto opengl es c++
« Risposta #6 il: 20 Luglio 2012, 08:50:41 CEST »
0
Premetto che non ho esperienza di openGL ne' di programmazione di giochi. Mi permetto di suggerirvi un approccio che minimizzi il più possibile gli ostacoli di apprendimento degli strumenti (non della materia) di programmazione, così da potervi concentrare sul risultato che dovete presentare. Per esempio, come accenna iceweasel, potrebbe essere conveniente usare le openGL 1.x e il Java (quindi non NDK), perchè rende tutto più semplice dal punto di vista dello strumento e praticamente non ha impatti sul risultato finale che deve essere ottenuto.

Provate a vedere se questo tutorial può essere un punto di partenza:
Android 3D game tutorial – Part I on Android Development

Si infatti l'integrazione con NDK per un novellino come me non è il massimo :) , ma il problema è che siamo obbligati a programmare in c++ e percio' usare NDK.
grazie comunque :)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Consiglio su progetto opengl es c++
« Risposta #7 il: 20 Luglio 2012, 09:22:51 CEST »
+1
Sono abbastanza in accordo con quanto detto da Sid ma, visto che dovete utilizzare necessariamente ndk, spero che conosciate c/c++ e che abbiate visto ampi esempi di utilizzo delle opengl proprio con c/c++ (per capirci: non dovete partire da zero, insomma).

Questo link potrebbe tornarvi utile: http://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Android

Purtroppo ho smanettato con opengl e ndk più di un anno fa, per cui non posso darvi link o dritte particolari, ma ricordo che sono partito dallo spulciarmi qualche demo opengl presente nell'ndk, tipo san-angeles. Si vede abbastanza bene che hanno uno scheletro java e diverse funzioni "critiche" scritte in maniera nativa.

prosit
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline lz91

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S I-9000
  • Sistema operativo:
    Ubuntu, Windows 7
Re:Consiglio su progetto opengl es c++
« Risposta #8 il: 20 Luglio 2012, 09:34:03 CEST »
0
Sono abbastanza in accordo con quanto detto da Sid ma, visto che dovete utilizzare necessariamente ndk, spero che conosciate c/c++ e che abbiate visto ampi esempi di utilizzo delle opengl proprio con c/c++ (per capirci: non dovete partire da zero, insomma).


Si si sappiamo il c/c++ certo.  :-)
Di esempi ne abbiamo visti parecchi dai.
grazie del link :)

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Consiglio su progetto opengl es c++
« Risposta #9 il: 20 Luglio 2012, 09:38:10 CEST »
+1
Volevo chiedere un chiarimento, se ho capito bene le opengl_es possono essere implementate in due modi sia in java  o in c++(NDK) vero ?

Non è proprio corretto.

Le OpenGL sono uno standard industriale sviluppato dalla SGI, poi passate al consorzio Khronos dopo il fallimento della SGI. Il sito ufficiale con la documentazione:

OpenGL - The Industry Standard for High Performance Graphics

Le OpenGL-ES sono implementate in C, sono delle librerie dinamiche (shared object) programmate da chi ha realizzato la GPU. Contengono le funzioni base comuni a tutte le OpenGL-ES più delle estensioni proprietarie.

Le OpenGL non hanno una implementazione in Java. Il framework di Android ha un wrapper di tutte le funzioni OpenGL-ES via JNI (Java Native method Interface).

Il vostro problema è la difficoltà di alcune cose. NDK di Android non è pensato per i principianti come SDK, bisogna essere esperti e conoscere bene tutti i tool, C/C++ e JNI. Le OpenGL-ES non sono come le OpenGL normali dei desktop. Le OpenGL-ES 1.x sono come un sub-set delle OpenGL con le funzioni minime per essere utilizzate nei giochi. Le OpenGL-ES 2.x rompono la compatibilità con le normali OpenGL, introducono un pipe-line molto flessibile ma di difficile utilizzo per chi non conosce le basi della programmazione 3D.

Se avete poco tempo e non siete esperti nei vari campi la vedo dura fare qualcosa di complesso con NDK e OpenGL-ES.

adb logcat | tee /tmp/logcat | grep TAG

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Consiglio su progetto opengl es c++
« Risposta #10 il: 20 Luglio 2012, 11:11:07 CEST »
0
L'ndk ve lo configurate con vs-android (c'é un mio post nella sezione apposita) e msvc 2010 express. A quel punto se avete windows siete comunque messi bene in quanto ad ambiente di sviluppo. invece di usare una native activity prendete come spunto san angeles per avere il giro di rendering in c, così in una mezza giornata avete risolto il problema  vi concentrate su c e opengl.

Ovviamente accoppiate logica e rendering.

Caricamento dati inutile la sfera ve la costruite "a mano", così come il piano.
Non usate shader ma andate con la fixed function pipeline, opengl es 1.x.
Accelerometro? Usate il rotation vector che é più facile e l'effetto é migliore.
Per il movimento sfera su piano il problema si riduce a due dimensioni, quindi anche in questo caso avete alternative  semplici.

 ;-)