|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
OpenGl
Dove trovo guide e tutorial sulle OpenGl, possibilmente in it?????
Tnk
__________________
Gnu/Linux User
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
http://nehe.gamedev.net/
in particolare scaricati questo .chm http://nehe.gamedev.net/files/resour...opengl_chm.zip Ovviamente devi studiare...non è roba che si impara in 5 minuti. per l'italiano ...andiamo male [EDIT] Cacchio non mi ero accorto che sopra ti avevano dato il link a quello in italiano Ultima modifica di verloc : 08-01-2004 alle 18:02. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2003
Città: addio fabriANO... mò sto a Roma ahò!!
Messaggi: 579
|
wow!
bellissima guida!!! un Grazie a Verloc e a Maxithron!!!!!!!!!!
__________________
Tavshan Pasha Bazar: Oggetti etnici per il relax! |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Quote:
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Ciao ragazzi, ho rispolverato il tread per discutere un pò di OpenGl
Ho iniziato da qualche tempo il corso di Sist. Operativi e finalmente ho intrapreso lo studio del C. Girovagando per la rete ho trovato i famosi tutorials di Nehe in italiano ed avendo visto che lo stesso autore degli articoli pensa che anche un novello di C/C++ può seguire il suo corso, ho pensato di perderci qualche oretta la sera in maniera hobbistica Ho preso il primo tutorials ed ho dato una buona lettura, devo dire che diverse cose le ho seguite bene, altre un pò meno. Ad esempio ho non poche difficoltà con queste funzioni: Codice PHP:
Un'altra cosa, questo sorgenteè scritto in C++ non C,vero?
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
WinMain è la funzione corrispondente al main nei programmi per Windows (il cosidetto entry point)...
WndProc è la funzione che processa i messaggi ricevuti da una certa finestra... Chiaramente è tutta roba Windows... |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2000
Messaggi: 936
|
se posso consigliare...non in it ma ottima.
http://www.opengl.org/documentation/red_book_1.0/ e http://www.opengl.org/documentation/blue_book_1.0/ Buon divertimento |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jun 2003
Città: Rimini
Messaggi: 198
|
Queste sono dispense che ci hanno dato per l'università...per iniziare vanno + che bene
http://www3.csr.unibo.it/~lazzaro/Me...20Grafica%20I/ |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Grazie ad entrambi per i link
Trovo le guide di Nehe abbordabili, come già detto mi sono trovato più spaesato nelle parti di codice dove si fa accesso diretto alle API win32 di windows. Grazie
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Prova ad usare la libreria glut che mette a disposizione di chi programma in opengl delle funzioni sempli semplici con cui costruire una finestra windows, gestire gli eventi del mouse e della tastiera, costruire un menu contestuale, senza usare le api di windows. Bastano poche righe per mettere su una finestra senza preoccuparti di nulla. Se vuoi solo studiare opengl e bene usarla, se poi vuoi imparare anche le api di win è un altro discorso.
Esempio, definisci un main cosi: Codice PHP:
glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); per creare la finestra.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Grazie Anx721, mi hai già aiutato in passato (ti ricordi le grammatiche?)
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Non penso che si diminuiscano le prestazioni, anche perche penso che le glut siano implementate con le api stesse. Servono propio a fornire al programmatore un'interfaccia piu semplice per costruire una finiestra. Oltre queste agevolazioni, offrono anche altre funzioni utili.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Sto facendo qualche prova, mettendo assieme il tutorial di Nehe, le guide suggerite p4ge83 ed il reedbook. Voglio aprire una finestra e disegnare un triangolo ed un quadrato leggermente spostato a destra.
Codice:
# include <windows.h>
# include <stdlib.h>
# include <gl/glut.h>
# include <gl/gl.h>
# include <gl/glu.h>
void disegna (void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Pulisce lo schermo e il Depth Buffer
glLoadIdentity(); // Resetta la View
glBegin(GL_TRIANGLES); // Disegna usando i triangoli
glVertex3f( 0.0f, 0.2f, 0.0f); // Sopra
glVertex3f(-0.2f,-0.2f, 0.0f); // Sotto a sinistra
glVertex3f( 0.2f,-0.2f, 0.0f); // Sotto a destra
glEnd(); // Finito di disegnare il triangolo
glTranslatef(3.0f,0.0f,0.0f); // Si muove a destra di 3 Unità
glBegin(GL_QUADS); // Disegna un quadrato
glVertex3f(-0.5f, 0.5f, 0.0f); // Sopra a sinistra
glVertex3f( 0.5f, 0.5f, 0.0f); // Sopra a destra
glVertex3f( 0.5f,-0.5f, 0.0f); // Sotto a destra
glVertex3f(-0.5f,-0.5f, 0.0f); // Sotto a sinistra
glEnd();
glFlush();
}
void myinit (void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity ( ); // Resetta la Modelview Matrix corrente
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
void main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE| GLUT_RGB);
glutInitWindowSize(800,600);
glutInitWindowPosition(100,150);
glutCreateWindow("Primo tentativo");
glutDisplayFunc(disegna);
myinit();
glutMainLoop();
}
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Il problema è che il quadrato lo trasli troppo e va a finirie fuori dalla finestra...
prova a sostituire glTranslatef(3.0f,0.0f,0.0f); con glTranslatef(0.75f,0.0f,0.0f); Ci vuole un po di dimistichezza rendersi conto delle dimensioni e del sistema di coordinate.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Hai ragione
Grazie
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Devo dire che mi sta divertendo parecchio l'uso dell'OpenGL accopiato con le Glut, operazioni come mettere il fullscreen od interagire con tastiera e mouse sono molto semplici
Adesso ho un problema, volevo fare roteare attorno all'asse Y un triangolo ed attorno all'asse X un quadrato: Codice:
void disegna(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Pulisce lo schermo e il Depth Buffer
glLoadIdentity(); // Resetta la Modelview Matrix corrente
glTranslatef(-1.5f,0.0f,-6.0f); // Si muove a Sinistra di 1.5 Unità e Dentro lo schermo di 6.0 Unità
glRotatef(rtri,0.0f,1.0f,0.0f); // Ruota il triangolo sull'asse Y ( NUOVA )
glBegin(GL_TRIANGLES); // Inizia a disegnare il triangolo
glColor3f(1.0f,0.0f,0.0f);
glVertex3f( 0.0f, 1.0f, 0.0f);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd(); // Finisce di disegnare il triangolo
glLoadIdentity(); // Resetta la Modelview Matrix corrente
glTranslatef(1.5f,0.0f,-6.0f); // Si muove a Destra di 1.5 Unità e Dentro lo schermo di 6.0 Unità
glRotatef(rquad,1.0f,0.0f,0.0f); // Ruota il quadrato sull'asse X ( NUOVA )
glColor3f(0.5f,0.5f,1.0f);
glBegin(GL_QUADS); // Disegna un quadrato
glVertex3f(-1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glEnd(); // Finisce di disegnare il quadrato
rtri+=0.2f; // Incrementa la variabile di rotazione per il triangolo ( NUOVA )
rquad-=0.15f;
glFlush();
}
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Probabilmente il problema deriva da come sono realizzate le animazioni sul tutorial del Nehe, che costruisce le finestre a mano, e penso che riachiami in qualche modo la funzione di disegno. Un modo semplice e pulito di realizzare le animazioni è di incrementare le variabili che guidano l'animazione (come rtri) non nella funzione disegna, ma in un'altra funzione, che puoi ad esempio chiamare animazione. L'importante è che dici che la funzione animazione è quella che deve esser continuamente richiamata per realizzre l'animazione appunto, e lo fai con l'istruzione:
glutIdleFunc(animazione); quindi animazione sarà qlcosa del tipo: void animazione(){ rtri+=0.2f; rquad-=0.15f; } e togli quelle istruzioni dalla funzione disegna. Non so a cosa serva l'istruzione glFlush(), io pero le funzioni disegna le terminavo sempre con: glutSwapBuffers (); Ciao.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Grazie ancora per i tuoi suggerimenti.
La funzione glutIdleFunc(animazione); la devo chiamare all'interno della funzione disegna prima di glFlush vero? Purtroppo non mi da i risultati sperati se la posiziono in quel posto. Se invece la metto nel main, prima di chimare glutMainLoop , mi taglia a metà il triangolo
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Va proprio nel main prima di glutMainLoop, come era indicato nel primo esempio che ti ho inviato. prova magari a postare il codice, ciao.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:28.



















