Come iniziare a studiare informatica grafica?

Pubblicità
aaaaaaa tu dici direttamente nel codice!!!!! infatti ho cambiato!! ma pensa che quell'esempio l'avevo proprio preso dal libro!!! vedo se parte ora!
 
allora quel programmino di prima ho capito che era un esempio stupido e generale senza rispettare sintassi e niente per far capire un minimo come funzionava.. ho trovato questo secondo esempio.. non mi arrendo fino a quando almeno uno non riesco a compilare!! c'è un nome specifico che dare al file quando salvo? ad esempio in java il nome del file deve essere lo stesso di quello della classe.. qui?

#include <GL/gl.h>
#include <GL/glut.h>

void display(void)
{
/* clear all pixels */
glClear (GL_COLOR_BUFFER_BIT);

/* draw white polygon (rectangle) with corners at
* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0)
*/
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();

/* don't wait!
* start processing buffered OpenGL routines
*/
glFlush ();
}

void init (void)
{
/* select clearing (background) color */
glClearColor (0.0, 0.0, 0.0, 0.0);

/* initialize viewing values */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

/*
* Declare initial window size, position, and display mode
* (single buffer and RGBA). Open window with “hello”
* in its title bar. Call initialization routines.
* Register callback function to display graphics.
* Enter main loop and process events.
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow (“hello”);
init ();
glutDisplayFunc(display);
glutMainLoop();
return 0; /* ISO C requires main to return int. */
}
 
no nessun nome specifico, basta che termini con .c

ad esempio l'esempio che hai postato l'ho chiamato a.c e l'ho compilato così

gcc -o a a.c -lGL -lGLU -lglut

occhio ai nomi delle librerie che sono sempre case-sensitive....gl e glu si trovano in /usr/lib/ligGL.so e /usr/lib/libGLU.so mentre glut si chiama /usr/lib/libglut.so

comunque le librerie stanno tutte nella directory /usr/lib mentre gli header in /usr/include/GL

detto questo, il programma compilato disegna un quadrato bianco
 
niente... lo salvo come prova.c .. da terminale mi metto nella cartella dove si trova il file e come comando do:
gcc prova.c -0 prova2 -IGL -IGLU -Iglut

ma mi da questi errori:
prova.c: In function ‘main’:
prova.c:50: error: stray ‘\342’ in program
prova.c:50: error: stray ‘\200’ in program
prova.c:50: error: stray ‘\234’ in program
prova.c:50: error: stray ‘\342’ in program
prova.c:50: error: stray ‘\200’ in program
prova.c:50: error: stray ‘\235’ in program
prova.c:50: error: ‘hello’ undeclared (first use in this function)
prova.c:50: error: (Each undeclared identifier is reported only once
prova.c:50: error: for each function it appears in.)
 
ma questo è un problema di editing....hai fatto copia/incolla?

così facendo hai copiato un simbolo che somiglia a " ma non lo è

alla riga 50 dove sta hello cancella quelle due pseudo-virgolette e mettici quelle vere
 
grandissimo! sono uno scemo -.- problema (almeno quello) tolto.. prossimo step quando do la linea di compilazione mi da il seguente errore (chissà se finiremo mai xD):

/tmp/ccu8blrR.o: In function `display':
prova.c:(.text+0xe): undefined reference to `glClear'
prova.c:(.text+0x2d): undefined reference to `glColor3f'
prova.c:(.text+0x39): undefined reference to `glBegin'
prova.c:(.text+0x58): undefined reference to `glVertex3f'
prova.c:(.text+0x77): undefined reference to `glVertex3f'
prova.c:(.text+0x96): undefined reference to `glVertex3f'
prova.c:(.text+0xb5): undefined reference to `glVertex3f'
prova.c:(.text+0xba): undefined reference to `glEnd'
prova.c:(.text+0xbf): undefined reference to `glFlush'
/tmp/ccu8blrR.o: In function `init':
prova.c:(.text+0xef): undefined reference to `glClearColor'
prova.c:(.text+0xfb): undefined reference to `glMatrixMode'
prova.c:(.text+0x100): undefined reference to `glLoadIdentity'
prova.c:(.text+0x12a): undefined reference to `glOrtho'
/tmp/ccu8blrR.o: In function `main':
prova.c:(.text+0x147): undefined reference to `glutInit'
prova.c:(.text+0x153): undefined reference to `glutInitDisplayMode'
prova.c:(.text+0x167): undefined reference to `glutInitWindowSize'
prova.c:(.text+0x17b): undefined reference to `glutInitWindowPosition'
prova.c:(.text+0x187): undefined reference to `glutCreateWindow'
prova.c:(.text+0x198): undefined reference to `glutDisplayFunc'
prova.c:(.text+0x19d): undefined reference to `glutMainLoop'
collect2: ld returned 1 exit status
 
dice che non trova quelle funzioni, cioè le librerie non ci sono

a questo punto verifica che in /usr/lib ci siano libGL.so, libGLU.so e libglut.so
 
si ci sono tutte e 3:( l'unica particolarità è che sulla libGL.so c'è una piccola croce sull'angolo in alto a destra e su tutte le altre no.. cosa significa?
 
sarà un artefatto di nautilus

comunque sia hai usato -lGL -lGLU e -lglut ? ovviamente le maiuscole contano

inoltre controlla che in /usr/include/GL ci siano gl.h, glu.h e glut.h
 
Pubblicità
Pubblicità
Indietro
Top