Al final he probado varias cosas.
Primero, los frames tardan mas de 17 milisegundos en dibujarse, asi que es normal que haya menos de 60fps. Voy a reprogramarlo para hacer que use OpenGL.
Segundo, usando "Sleep()" en el codigo de ejemplo de arriba he reducido el uso de la CPU al 8% aproximadamente. (Core i5 6300HQ) La tarjeta grafica le ha acompañado cayendo al 0%. (GTX 950m)
Justo despues de declarar la variable "fullscreen" he añadido esto:
Y despues en el "WinMain", en la parte donde se ejecuta "DrawGLScene()", lo he reemplazado por lo siguiente:
Con eso he logrado hacer la magia.
Muchas gracias por todo. Hasta la proxima.
Primero, los frames tardan mas de 17 milisegundos en dibujarse, asi que es normal que haya menos de 60fps. Voy a reprogramarlo para hacer que use OpenGL.
Segundo, usando "Sleep()" en el codigo de ejemplo de arriba he reducido el uso de la CPU al 8% aproximadamente. (Core i5 6300HQ) La tarjeta grafica le ha acompañado cayendo al 0%. (GTX 950m)
Justo despues de declarar la variable "fullscreen" he añadido esto:
Código [Seleccionar]
#include <time.h>
clock_t STARTING_CLOCK;
void ClockInit() {
STARTING_CLOCK = clock();
}
int GetElapsedTime() {
return (((((double)clock()) - ((double)STARTING_CLOCK)) / (double) CLOCKS_PER_SEC) * 1000);
}
bool DeltaTime(float lastUpdate, float margen) {
return (((GetElapsedTime() - lastUpdate) / 1000) >= margen);
}
Y despues en el "WinMain", en la parte donde se ejecuta "DrawGLScene()", lo he reemplazado por lo siguiente:
Código [Seleccionar]
else { // Not Time To Quit, Update Screen
unsigned int frameTime = GetElapsedTime();
DrawGLScene(); // Draw The Scene
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
unsigned int endFrameTime = GetElapsedTime();
if (endFrameTime - frameTime < 17) {
Sleep(17 - (endFrameTime - frameTime));
}
}
Con eso he logrado hacer la magia.
Muchas gracias por todo. Hasta la proxima.