Gå til innhold

Delay, hvordan skape delay på f.eks. 0.1sek.


Anbefalte innlegg

Videoannonse
Annonse
  • 2 uker senere...

I alle fall så lite standard at det skriker i ørene mine.

 

Om noe, så bruk sleep() med en (i større eller mindre grad) platformuavhengig wrapper.

 

(Sekunder benevnes forresten som "s" -- kun SI-enheter oppkalt etter egennavn får stor bokstav. Eks: A -- ampere, N -- newton, osv. Dette gjelder også med størrelsesprefikser. Med andre ord: "0,1 s" == 100 ms)

Lenke til kommentar

typedef long long qword;
float get_time()
{
qword m_tmp;
__asm
{
 lea ebx, m_tmp
 rdtsc
 mov dword ptr [ebx], eax
 add ebx, 4
 mov dword ptr [ebx], edx
 add ebx, -4
 fild qword ptr [ebx]
}
}

bool m_init = false;

float m_old_time;

float get_passed_time()
{
float m_ret_val;
float m_time = get_time();
if(m_init)
{
 m_ret_val = m_time - m_old_time;
 m_old_time = m_time;
 return m_ret_val;
}
else
{
 m_init = true;
 m_old_time = get_time();
 return 0.0f;
}
}

 

kan kanskje brukes? den har jeg skrevet i VC++ 7.1, og bruker den til time based movement.

Lenke til kommentar

Nei, jeg har andre ting å gjøre :)

 

Jeg har bare kopiert denne rett fra kildekoden min, og der brukes den til noe annet en å vente, men jeg kan skrive den betydelig kortere, droppe hele floating point greiene f.eks..

 

rdtsc var den eneste funksjonen jeg fant som hentet tid fra prosesoren.

 

typedef long long qword;
qword get_time()
{
qword m_tmp;
__asm
{
lea ebx, m_tmp
rdtsc
mov dword ptr [ebx], eax
add ebx, 4
mov dword ptr [ebx], edx
add ebx, -4
}
return qword ptr [ebx] 
}

bool m_init = false;

qword m_old_time;

qword get_passed_time()
{
qword m_ret_val;
qword m_time = get_time();
if(m_init)
{
m_ret_val = m_time - m_old_time;
m_old_time = m_time;
return m_ret_val;
}
else
{
m_init = true;
m_old_time = get_time();
return 0;
}
}

 

vet ikke om dette fungerer, skrev det i en fei, men den er kanskje mer til hjelp en den foregående.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...