Autore Topic: OpenGL Luci e Colori  (Letto 947 volte)

Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
OpenGL Luci e Colori
« il: 14 Aprile 2012, 11:50:06 CEST »
0
Ho iniziato da poco a fare prove con le OpenGL ma ho un problema di conflitto tra luci e colori: Se ho un oggetto con le varie facce colorate ed abilito le luci, i colori delle facce diventano ininfluenti sul risultato finale, pare che il colore del oggetto dipenda solo dalla luce e dal materiale.

Ho dimenticato io di abilitare qualcosa o funziona esattamente così?

Attualmente uso la versione 1.1 di OpenGL ES, cambierebbe qualcosa passando alla 2.0?

Grazie.

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:OpenGL Luci e Colori
« Risposta #1 il: 14 Aprile 2012, 14:16:39 CEST »
0
Le OpenGL-ES 1.x hanno un modello rigido per gli shader e per le luci, se abiliti i parametri del materiali (diffuse, specular, ecc..) entrano in gioco loro in funzione del modello e delle luci attive.

Con le OpenGL-ES 2.x le cose sono cambiate, non è più presente una pipe line fissa, nelle API non sono più presenti le varie funzioni per i materiali, luci, ecc... Lo shader viene in questo caso imposto dal codice del fragment shader attivo.
adb logcat | tee /tmp/logcat | grep TAG

Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
Re:OpenGL Luci e Colori
« Risposta #2 il: 14 Aprile 2012, 15:40:10 CEST »
0
Quindi se voglio creare un oggetto che risponda alla luce in base al colore contenuto come attributo dei vertici, devo passare per forza alla 2.0?

Avevo dato una scorsa veloce ed avevo scelto le 1.1 perché sembrano molto più semplici da usare... vabbé, proviamo con le 2.0.

Grazie!

Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
Re:OpenGL Luci e Colori
« Risposta #3 il: 14 Aprile 2012, 16:35:00 CEST »
0
Ho risolto abilitando GL_COLOR_MATERIAL, in questo modo il materiale reagisce alla parte Ambiente e Diffusa della luce in base al colore del oggetto, mentre alla parte Speculare risponde con i valori impostati con glMaterial.

Metto risolto.

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:OpenGL Luci e Colori
« Risposta #4 il: 14 Aprile 2012, 17:15:40 CEST »
0
Per le OpenGL-ES  1.x dipende dal modo di glColorMaterial quali componenti influenza il colore, di default solo diffuse e ambient ma non specular:

glColorMaterial

Le OpenGL-ES  1.x sono più semplici da programmare ma hanno la pipeline di resa fissa. Con la versione 2.x si ha un API con molte meno funzioni già pronte ma è tutto programmabile.
adb logcat | tee /tmp/logcat | grep TAG

Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
Re:OpenGL Luci e Colori
« Risposta #5 il: 14 Aprile 2012, 19:10:55 CEST »
0
Avevo trovato anch'io quella funzione, purtroppo in Android (ma forse nelle ES in generale) non è implementata: abilitando GL_COLOR_MATERIAL si ottiene il risultato che nella descrizione viene dato come default, ma non c'è modo di cambiare il comportamento.

Per quello che devo fare al momento mi è sufficiente così...

Grazie, ciao!