Ciao a tutti. Sto creando un'interfaccia grafica per il mio progetto e per rendere il tutto più carino ho deciso di creare una lampada che illumini la simulazione.
Questa é la classe:
codice:#ifndef LAMPADA_H #define LAMPADA_H #include "wxincludes.h" #include "Typedef.h" #include "Vettore.h" class Lampada { public: // --- COSTRUTTORI --- Lampada(const Vettore& = {0,-5,2}, const Vettore& = {0,5,-2}, double = 90); Lampada(const vector&, const vector&, double = 90); Lampada(const list&, const list&, double = 90); // --- METODI --- void illumina() const; private: // --- ATTRIBUTI --- Vettore posizione; Vettore direzione; double ampiezza; }; #endifIl problema é che, pur avendo colorato una palla di rosso, quest'ultima appari si correttamente illuminata, ma in scala di grigi...codice:#include "Lampada.h" // *** PRIVATE *** // --- COSTRUTTORI --- Lampada::Lampada(const Vettore& p, const Vettore& d, double a) : posizione(p), direzione(d), ampiezza(a) {} Lampada::Lampada(const vector& p, const vector& d, double a) : posizione(p), direzione(d), ampiezza(a) {} Lampada::Lampada(const list& p, const list& d, double a) : posizione(p), direzione(d), ampiezza(a) {} // --- METODI --- void Lampada::illumina() const { GLfloat light_ambient[]= {0.1, 0.1, 0.1, 0.1}; GLfloat light_diffuse[]= {1.0, 1.0, 1.0, 0.0}; GLfloat light_specular[]= {1.0, 1.0, 1.0, 0.0}; GLfloat light_position[]= {posizione[0], posizione[1], posizione[2], 1.0}; glLightfv (GL_LIGHT1, GL_AMBIENT, light_ambient); glLightfv (GL_LIGHT1, GL_DIFFUSE, light_diffuse); glLightfv (GL_LIGHT1, GL_SPECULAR, light_specular); glLightfv (GL_LIGHT1, GL_POSITION, light_position); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, ampiezza); GLfloat spot_direction[] = {direzione[0], direzione[1], direzione[2]}; glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction); glEnable (GL_LIGHT1); glEnable (GL_LIGHTING); }
In più anche gli assi cartesiani che avevo disegnato al centro dell'immagine appaiono grigi e non più colorati, risultando così praticamente invisibili sullo sfondo nero.
Qualcuno sa come migliorare la lampada e far si che gli oggetti si colorino correttamente? Grazie.
Ps: L'interfaccia grafica é costituita dalle seguenti classi: GUI, Finestra e Vista. GUI (wxApp) implementa semplicemente l'applicazione. Finestra si occupa della gestione della finestra (wxFrame), mentre la classe vista si occupa della simulazione vera e propria (timing e disegno). Questa classe contiene una classe Camera e appunto la classe Lampada.
Grazie,
R.

Rispondi quotando