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]
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
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
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
Pero QueryPerformanceCounter tiene mas precision de GetTickCount
;-P
si puedes usarla es mejor.
PD: mira que suspender redes XDDDD
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
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?
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]