L'obiettivo del progetto è la realizzazione di un semplice videogioco del tipo "automotive 3d game" che racchiuda le principali argomentazioni affrontate nel corso. Il software è pensato per ambiente UNIX e sviluppato con il linguaggio C++, utilizzandolo col paradigma ad oggetti. La gestione della grafica è resa possibile dalle librerie SDL e OpenGL. In particolare la prima ha il compito di gestire finestre e ricevere segnali esterni, mentre la seconda si preoccupa principalmente di amministrare oggetti grafici 3D. L'interattività con l'utente è affidata ad un ciclo degli eventi, che tramite polling(chiamata SDL_PollEvent(e) della libreria OpenGL) rileva gli input esterni(SDL_Event) e reagisce in base a questi. Il progetto si basa e prende spunto dal codice usato per il "progettoCar" mostrato a lezione.
Menù iniziale del gioco
NB. La pausa funziona per la versione "fuel" del gioco in quanto la modalità a tempo non prevede le pause. Tale funzione verrà estesa nei lavori futuri.
glViewport(0, 0, scrW, scrH);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70, ((float) scrW) / scrH, 0.01, 10000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
setCamera(); // cambia parametri a seconda del tipo di camera selezionata
float mat_ambient[3] ={ 1.0f, 1.0f, 0.06625f };
float mat_diffuse[3] ={ 0.18275f, 1.0f, 0.22525f};
float mat_specular[3] ={1.0f, 1.0f, 0.346435f };
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
float shine = 0.21794872;
glMaterialf(GL_FRONT, GL_SHININESS, 128 * shine );
glEnable(GL_COLOR_MATERIAL); //Abilita colore sulla mesh
// [.... RENDER DELLA MESH]
glDisable(GL_COLOR_MATERIAL);
Cubemapping
void RenderTextCoord(string message, SDL_Color color, int x, int y, TTF_Font *font);
Premendo F11 viene i mostrato il pannello per il debug.
Attraverso tale pannello è possibile vedere le configurazioni attive.