[ kish @ 22.07.2006. 17:03 ] @
Ovako:
Prilican sam novajlija sto se tice OpenGL-a, sto znaci da ima mnogo stvari koje mi bas i ne idu, ali navescu jedan koji me prilicno muci u poslednje vreme: Naime, primetio sam da koordinate koje se koriste za odredjivanje raznih tacaka i sl. nemaju mnogo veze sa koordinatama koje se inace koriste u 2d grafici (sto se podrazumeva jer je u pitanju treca dimenzija), koje u glavnom odgovaraju poziciji pixela na monitoru. Problem je sledeci: kako zadavati koordinate u skladu sa pozicijom pixela na monitoru? Ne znam dal sam dovoljno jasan, zato evo primera: Kako izcrtati cetvorougao koji se nalazi tacno u levom gornjem uglu ekrana (2d koordinate bi bile 0,0) i recimo, sirina stranice mu je tacno 100 pixela? Ovo mi prilicno bitno jer za pocetak nisam hteo da zaranjam u 3d vec da pocnem lagano sa nekim primitivnim 2d fazonima, a priznacete, tu je mnogo lakse raditi sa uobicajnim 2d koordinatama. Nadam se da sam bio dovoljno jasan. Hvala na pomoci unapred.
[ yooyo @ 22.07.2006. 22:13 ] @
Code:

void Begin2DMode(vec2i size)
{
    glMatrixMode(GL_PROJECTION); 
    glPushMatrix();    
    glLoadIdentity();
    glOrtho(0.0, size.x, size.y, 0.0, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);     
    glPushMatrix();    
    glLoadIdentity();
}

void End2DMode()
{
    glPopMatrix(); 
    glMatrixMode(GL_PROJECTION); 
    glPopMatrix(); 
    glMatrixMode(GL_MODELVIEW);
}



Pozovi Begin2DMode(dimenzija_ekrana) i posle toga je koordinata (0,0) gornji levi ugao ekrana/prozora. Vodi racuna da je Z postavljeno izmedju -1 i 1, tako da u glVertex3f pozivima vodi racuna da je Z izmedju -1 i 1. U suprotnom nista se nece videti na ekranu.

Kada zavrsis sa "2D modom", pozovi End2DMode() da bi se vratio u prethodno stanje.

Ja koristim ove func u situaciji kada zavrsim 3D rendering, a zatim zelim da prikazem neke dubug informacije (FPS, pozicija kamera, broj trouglova, ...)
[ kish @ 24.07.2006. 09:06 ] @
Hvala na pomoci