E-mail: coviello@deemail.poliba.it GLUT & OpenGL Ing. Tommaso Coviello Politecnico di Bari E-mail: coviello@deemail.poliba.it.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
PHP.
Analizzatori Sintattici con Cup Giuseppe Morelli.
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
Algoritmi e Programmazione
Anno accademico Le classi di memorizzazione.
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
Funzioni definite dall’utente
Gerarchie di Oggetti Tutti i sistemi avanzati di grafica (PHIGS, OpenGL, DirectDraw, …) permettono di definire un modello come una gerarchia di oggetti.
1 Costruzione di Interfacce Primi passi in OpenGL
1 Costruzione di Interfacce Primi passi in OpenGL
Introduzione al linguaggio C++ 5 lezioni
Introduzione agli stream e alle classi
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Interazione utente-programma
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Dichiarazioni e tipi predefiniti nel linguaggio C
I File.
Il Linguaggio C.
Espressioni condizionali
Argomenti della lezione
DBMS ( Database Management System)
1 Programmazione grafica: lInterazione Daniele Marini.
1 Gestione della Window Daniele Marini. 2 Definire una Window: GLUT o altro WM /* Standard GLUT initialization */ glutInit(&argc,argv); glutInitDisplayMode.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Ll Questionario Introduzione al software SAS (Parte 2) Metodi Quantitativi per Economia, Finanza e Management Esercitazione n°2.
PROGRAMMARE IN C Un ambiente di sviluppo `e un software che serve per scrivere ed eseguire programmi. Generalmente integra almeno 3 funzionalita’: Editor:
CODIFICA Da flow-chart a C++.
Creazione progetto in C++/DEV
MIGLIORAMENTO USABILITA TIPI FASCICOLO. Miglioramento usabilità tipi fascicolo Esigenza Lutilizzo avanzato delle tipologie di fascicoli procedimentali.
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
Primitive grafiche e interazione Daniele Marini Corso Di Programmazione Grafica e Laboratorio.
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Corso di Programmazione Grafica e Laboratorio Introduzione a OpenGL Prof. Daniele Marini.
Primitive grafiche e interazione Daniele Marini Davide Gadia Marco Ronchetti Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Primitive grafiche e interazione Daniele Marini Corso Di Programmazione Grafica e Laboratorio.
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Primitive OpenGL Corso di Programmazione Grafica e Laboratorio Daniele Marini.
1 Programmazione grafica: l’Interazione Daniele Marini.
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
INTRODUZIONE A JAVASCRIPT
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
Programmazione in linguaggio C
Introduzione a Javascript
Lezione 19 Riccardo Sama' Copyright  Riccardo Sama' Access.
IV D Mercurio DB Lezione 2
Programmazione in Java
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Lezione I Alessandro Dal Palu’ Laboratorio di Programmazione.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Internetworking V anno.
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
LA FILOSOFIA DEL SAS Concepito per essere facilmente accessibile.
Informatica e Informatica di Base
Copyright © Istituto Italiano Edizioni Atlas
Lezione 01 Writer: I Dati inserimento e modifica.
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Transcript della presentazione:

E-mail: coviello@deemail.poliba.it GLUT & OpenGL Ing. Tommaso Coviello Politecnico di Bari E-mail: coviello@deemail.poliba.it

OpenGL OpenGL: È una libreria grafica che fornisce gli strumenti per disegnare una scena in una finestra. Assume di avere a disposizione una finestra su cui disegnare e pertanto non prevede alcuna funzionalità per la gestione delle finestre. E’ multipiattaforma e quindi utilizzabile sia su sistemi linux che windows

GLUT GLUT: È una libreria che fornisce le funzionalità per la creazione e gestione delle finestre. Gestisce anche l’interazione dell’utente con tali finestre Permette la creazione di finestre monolitiche e pertanto non fornisce gli strumenti per la creazione di interfacce grafiche come pulsanti, pannelli ecc. Le interazioni sono catturate attraverso delle funzioni callback. Tale callback viene associata a un certo tipo di evento provocato dall’utente sulla finestra (esempio di evento: click col pulsante destro del mouse)

Cenni al linguaggio C Le parti fondamentali di un programma sono: una Global Declarative Part il Main Program le Funzioni e le Procedure I commenti

Linguaggio C La Global Declarative Part contiene la dichiarazione dei simboli che potranno essere referenziati in tutto il programma. La dichiarazione può essere diretta o indiretta. Nella dichiarazione diretta compaiono esplicitamente gli elementi globali (Costanti, Variabili, ecc.), in quella indiretta invece, compaiono i nomi di contenitori (Librerie) al cui interno si trovano i simboli che si necessita referenziare. Il Main Program è individuato dalla parola chiave main ( ) una DeclarativePart, che contiene la dichiarazione degli elementi disponibili nel programma principale; una ExecutablePart, racchiusa tra i simboli { }, che contiene le Istruzioni eseguibili da cui è composto il programma.

Linguaggio C Le Funzioni e Procedure hanno una struttura analoga a quella del Main Program. Un Commento, che non è influente dal punto di vista esecutivo perchè non considerato dal programma di traduzione, è delimitato dai simboli /* e */ Per inserire una sola riga di commento basta farla precedere da //

Un tipico programma La Global Declarative Part contiene la dichiarazione degli Header file delle librerie che verranno utilizzate in fase di compilazione. #include <stdio.h> /*La libreria standard di I/O consente di effettuare operazioni di lettura/scrittura su dispositivi logici e fisici, come files, linee seriali, e periferiche in genere. */ #include <GL/glut.h> /* Dichiarazione dell’header file della libreria GLUT */

Il main Il main del programma contiene le seguenti parti. Inizializzazione glutInit(&argc, argv); /* richiede al sistema operativo le risorse per aprire una finestra su cui poter disegnare*/ glutInitDisplayMode(GLUT_RGB); /* Stabilisce le caratteristiche della finestra. In particolare GLUT_RGB stabilisce che venga supportato il formato RGB per i colori*/ Creazione delle finestre glutInitWindowSize(500, 500); /* stabilisce le dimensioni della finestra in cui disegnare*/ glutCreateWindow(“esempio"); /*crea la finestra e specifica il titolo che comparirà sulla barra della finestra*/

Il main Registrazione di funzioni callback definite dall’utente. Ogni programma deve comunque contenere almeno una callback che viene richiamata ogniqualvolta la finestra diventa visibile glutDisplayFunc(display); /*la funzione definita dall’utente si chiamerà display e conterrà il codice openGL che descrive la scena da disegnare*/ Innesco del loop principale che è un ciclo senza fine glutMainLoop(); /* rende visibile la finestra e attende l’accadimento di un evento associato a una callback*/

Callback di visualizzazione In questa funzione viene inserito tutto il codice openGL. La funzione è richiamata ogni qualvolta la finestra viene resa visibile. Alcune delle parti principali sono: Pulizia del buffer dove si andrà a disegnare glClear(GL_COLOR_BUFFER_BIT); Assegnazione degli attributi e chiamata delle primitive

Le primitive di OpenGL Le primitive grafiche di OpenGL vengono specificate da una lista di vertici. A seconda della primitiva specificata i vertici assumono un significato diverso La lista dei vertici si trova sempre racchiusa da due istruzioni di inizio e fine della primitiva: glBegin(NOME_PRIMIITVA); (…) glEnd();

Esempi di primitive GL_POINTS: la lista dei vertici rappresenta un punto nello spazio GL_LINES: ogni coppia di vertici consecutivi formano gli estremi di un segmento GL_LINE_STRIP: permette il disegno di una spezzata. Una linea unisce il vertice corrente col successivo GL_LINE_LOOP: come GL_LINE_STRIP a parte il fatto che l’ultimo vertice viene unito con il primo GL_TRIANGLES: permette il disegno di triangoli utilizzando tre vertici consecutivi

Attributi Per modificare alcune proprietà delle primitive è possibile utilizzare delle funzioni per modificare gli attributi. La specifica di questi attributi deve essere fatta prima dell’utilizzo della primitiva. glPointSize(5.0); /*fissa la grandezza dei punti mediante un valore floating. Il valore di default è 1.0*/ glLineWidth(5.0); /*fissa lo spessore dei segmenti mediante un valore floating Il valore di default è 1.0 */

Esempio 1 #include <GL/glut.h> //disegno dei vertici di un quadrato void display(void) { glClear(GL_COLOR_BUFFER_BIT); glPointSize(3.0); glLineWidth(3.0); glColor3f (0.4, 0.1, 0.2); glBegin(GL_POINTS); glVertex2f(-0.5,-0.5); //vertice in basso a sinistra glVertex2f(-0.5,0.5); //vertice in alto a sinistra glVertex2f(0.5,0.5); //vertice in alto a destra glVertex2f(0.5,-0.5); //vertice in basso a destra glEnd(); } void main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB); glutInitWindowSize(500, 500); glutCreateWindow(“esempio"); glutDisplayFunc(display); glutMainLoop();

Output

Esempio 2 Utilizzando la stessa lista di vertici e cambiando la primitiva GL_POINTS in GL_LINES si ottiene il seguente output

Esempio 3 Utilizzando la stessa lista di vertici e cambiando la primitiva GL_POINTS in GL_LINE_LOOP si ottiene il seguente output