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:
#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:
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.