Simulacija stvarnosti (OpenGL)

Simulacija stvarnosti

/ The camera never moves, the world is simply rotated or rescaled /

.

OpenGL (Open Graphics Library) predstavlja specifikaciju koja opisuje višeplatformski programski interfejs za pisanje programa koji rade sa dvodimenzionalnom i trodimenzionalnom grafikom. Ovaj interfejs čini preko 250 različitih funkcija koje se mogu koristiti za izradu kompleksnih trodimenzionalnih scena sačinjenih od jednostavnih elemenata. OpenGL razvijen je 1992. godine od strane Silikon Grafiks (Silicon Graphics Inc  SGI) i u industriji video igara predstavlja pandan Majkrosoftovoj Direct3D tehnologiji.

Često se koristi u naučne svrhe, kod CAD programa, u projektima virtuelne stvarnosti i raznim drugim simulatorima i endžinima.

.

bool need_redraw = true;

double camera[3] = { 4, 3, 7.25 }; // Set koordinata kamere.

double dir[3]        = { 1, 0,     0 }; // Trenutni vektori u pravcu gledanja.

// Main loop

for (;;)

{

if (need_redraw)

{

// Odlučivanje projekcije viewport-a

glMatrixMode (GL_PROJECTION); // Target matrix: Projekcija.

glLoadIdentity ( );                        // Resetuje sve transformacije.

glFrustum (-, 1333e-2, .1333e-2, -,1e-2, .1e-2, .001, 30.0);

// Mehanizam na koji način će svet biti ”transformisan” iz perspektive viewport-a.

// U OpenGL kamera se nikada ne pomera, već se svet rotira/kalibriše/redimenzionira

// oko kamere koja je uvek statična.

glMatrixMode (GL_MODELVIEW); // Target matrix: Svet.

glLoadIdentity ( );                        // Resetuje sve transformacije.

#define drand (m) ((std::rand()%1000500)*5e-2*(m))

gluLookAt ( camera [0], camera [1], camera [2,],

camera [0] + dir [0] + drand (6e – 5),

camera [1] + dir [1] + drand (6e – 5),

camera [2] + dir [2] + drand (6e – 5),

0, -1, 0);

// Omogućava sračunavanjima funkcionisanje unutar novog frejma.

glClear (GL_DEPTH_BUFFER_BIT);

// Iscrtava sve što treba biti renderovano.

// Govori OpenGL-u da renderuje i prikazuje stvari.

glFlush ( );

need_redraw = false;

}

PC: : Render( );

while (kbhit ( ) )

switch (getch ( ) )

{
case ‘q’ : case 27: case ‘Q’ : goto done;
}

}

Debugging Mode


Iznesite Vaše mišljenje na predloženu temu

Polja označena zvezdicom (*) su obavezna. Uneti email neće biti javno dostupan, niti deljen s trećim licima.