Beste Tweakers,
Sinds een paar dagen ben ik me aan het verdiepen in opengl (linux|c|c++). Gaat opzich heel voorspoedig, ik heb alleen een probleem met het behouden van een stabiele framerate in heel simpele scenes. Ik snap de theorie, weet hoe het moet worden gerealiseerd maar....
Het probleem is in deze dat clock() niet precies genoeg is. Nu heb ik wat tweaker posts afgestruind, maar die hebben het allemaal over timeInMillis() operaties, wat voor het controleren van de framerate te onnauwkeurig is omdat dit micro- of nanoseconde precisie vereist. Dus mijn vraag: "Weet iemand hoe men een heel nauwkeurige tijdsindicatie verkrijgt in C/C++? Of technieken om 1-frame-render tijden te berekenen in OpenGL apps"
Sinds een paar dagen ben ik me aan het verdiepen in opengl (linux|c|c++). Gaat opzich heel voorspoedig, ik heb alleen een probleem met het behouden van een stabiele framerate in heel simpele scenes. Ik snap de theorie, weet hoe het moet worden gerealiseerd maar....
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| void display( void ) {
begin = clock();
glClear( GL_COLOR_BUFFER_BIT );
glColor3f( 1.0, 1.0, 1.0 );
glPushMatrix();
glRotatef( sun, 0.0, 1.0, 0.0 );
glutWireSphere( 1.0, 20, 16 );
glRotatef( year, 0.0, 1.0, 0.0 );
glTranslatef( 2.0, 0.0, 0.0 );
glRotatef( day, 0.0, 1.0, 0.0 );
glutWireSphere( 0.2, 10, 8 );
glPopMatrix();
glutSwapBuffers();
printf("framerendertime: %ld\n", clock() - begin );
} |
Het probleem is in deze dat clock() niet precies genoeg is. Nu heb ik wat tweaker posts afgestruind, maar die hebben het allemaal over timeInMillis() operaties, wat voor het controleren van de framerate te onnauwkeurig is omdat dit micro- of nanoseconde precisie vereist. Dus mijn vraag: "Weet iemand hoe men een heel nauwkeurige tijdsindicatie verkrijgt in C/C++? Of technieken om 1-frame-render tijden te berekenen in OpenGL apps"
offtopic:
Waarom staat de CLOCKS_PER_SEC constante in linux op een miljoen bij een 3 gigahertz processor?
Waarom staat de CLOCKS_PER_SEC constante in linux op een miljoen bij een 3 gigahertz processor?
github.com/Error323