Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cronometro que no se vea afectado por los fps

Iniciado por [EX3], 24 de Noviembre de 2002, 06:38:40 PM

« anterior - próximo »

[EX3]

                                Nas a todos:

He creado unos cronometros similares a los de div, pero el problema ke me dan es ke pierden precision segun la cantidad de cuadros por segundo (fps) del programa. Si alguien me puede echar una mano con esto se lo agradeceria mucho.

Salu2

[EX3]                                
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

[EX3]

                                Cuando digo ke a veces estoy en la parra no me ekivoco!  :oops:

Se me olvido mencionar que los cronometros que estoy intentando crear los programo en Visual Basic, ke burrada por mi parte seria, jeje  :P                                
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

CordayUK

                                tienes que llamar a un contador con mas precision que el tipico getticks, se llama PerfomanceCounter

en c es
__int64 __rate;
QueryPerformanceFrequency ((LARGE_INTEGER*)&__rate);

en visualbasic tambien deberias poder llamar a esta funcion, mira en los doc                                

ethernet

COmo se nota q en los teclado ingleses no teneis q pusalr shift para poner_barras_bajas ;)), De todas maneras aqui ponemos eñes (  ññ ñ ñ ñ ñ ñ ññ) facilmente xDD.

tb puedes usar timeGettime ;)
saludos

CordayUK

                                Pero QueryPerformanceCounter tiene mas precision de GetTickCount
;-P

si puedes usarla es mejor.

PD: mira que suspender redes XDDDD                                

ethernet

Despues aprobe con notable xDDDD. Creeme q llevar este nick es un gran peso xD.
timeGetTime da precision de 50 ms me parecio leer en el msdn, es cosa del programador elegir la funcion deseada. Si requieres mucha precicion usa lo q dice cordayUK.

saludos

Zaelsius

QueryPerformanceCounter es tambien más lenta que las otras funciones.

Por cierto, haciendo varios tests llegué a la conclusión de que, en apariencia, las funciones timeGetTime() y getTickCount() son prácticamente iguales, y no pude llegar a notar diferencias notables.

Alguien sabe si difieren en algo?

[EX3]

                                Al fin una respuesta, ya pensaba que nadie responderia,  :jaja:

Hace ya dos semanas que solucione el problema de los cronometros y con buen resultado y utilizando la "tipica" funcion GetTickCount() de Windows, pero aun asi muchas gracias por vuestra ayuda.  :ojo:

Os explico, utilize la formula de calculo de FPS de mi motor para hacer el incremento en los cronometros:

Esta es la formula tipica de calculo de FPS:

'Para los cuadros por segundo

Dim FPS_tUltimo As Long

Dim FPS_Suma As Single

Dim FPS_Actual As Single 'Los FPS del programa.



'Declaración de la función API para manejar los tiempos

Private Declare Function GetTickCount Lib "kernel32" () As Long



Private Sub FPS_Count()



   If (GetTickCount() - FPS_tUltimo) >= 1000 Then

       FPS_Actual = FPS_Suma

       FPS_Suma = 0

       FPS_tUltimo = GetTickCount()

   End If

   FPS_Suma = FPS_Suma + 1



End Sub



Mi cronometro seria asi:

Dim m_Timer As Long 'Cronometro.

Dim Last_Tick As Long 'Guarda el ultimo ciclo de reloj.



'Declaración de la función API para manejar los tiempos

Private Declare Function GetTickCount Lib "kernel32" () As Long



Private Sub Timer_Count()

   

   'Si "GetTickCount()" menos el "Ultimo Ciclo del reloj" es igual o mayor que un segundo...

   If (GetTickCount() - Last_Tick) >= 1000 Then

       Last_Tick = GetTickCount()

       m_Timer = m_Timer + 1 '... incremento el cronometro.

   End If



End Sub



Este ejemplo realiza el incremento cada segundo.
Esta formula es la que tengo actualmente implementada en el motor pero con precision en decimas y no me ha dado ningun problema de momento.

Aun asi probare con las otras funciones que me habeis facilitado, que nunca viene nada mal probar otras maneras.

Gracias  :)

[EX3]                                
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.