Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 9. leden 2010, 16:10:32 Předmět: FPS |
|
|
Nán problem s fps aplikace ktera je zalozena na NeHe kodu viz nize jde o to ze se nemuzu dostat pres 60FPS nevim v cem muze byt problem urcite to neukazuje spravne protoze mam 9600GT 1gb 2.8GHZ procesor a 4gb ramky a hra world of warcraft ma kolem 200fps a to je mnohem narocnejsi tak jesti by nekde vedel kde je chyba budu rad diky
nenasel sem kolonku pro prilohy tak je to zde http://uloz.to/3574791/c-.rar |
|
Návrat nahoru |
|
 |
Deluxe

Založen: 31. 07. 2007 Příspěvky: 235 Bydliště: Oslavany
|
Zaslal: 9. leden 2010, 16:16:23 Předmět: |
|
|
Na kod jsem se zatim nedival, ale tech 60 FPS je v okne nebo fullscreenu? Ve fullscreenu by mohlo jit o tzv. Vertikalni Synchronizaci, GPU pak ceka s vykreslenim sceny na prekresleni monitoru. |
|
Návrat nahoru |
|
 |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 9. leden 2010, 16:20:13 Předmět: |
|
|
nene v okne ale na tom monitoru neco bude zvysil sem mu frekvenci z 620 na 75 vic nejde a fps je 75 ale to mi celkem vadi neda se s tim neco udelat aby to proste vykreslilo hned? |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 9. leden 2010, 16:22:17 Předmět: |
|
|
Vypni vertikální synchronizaci v nastavení driveru nebo použij wglSwapIntervalEXT(0), tu funkci získáš třeba přes wglGetProcAddress. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 9. leden 2010, 16:29:16 Předmět: |
|
|
nastavil sem to v driveru a hned mam 2600FPS diky jeste jestli bys mi mohl napsat presne tu funkcni jak to udelat a asi to pak dat do Init
gl |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 9. leden 2010, 17:10:00 Předmět: |
|
|
Stáhneš si knihovnu GLEW.
#include <glew.h>
#include <wglew.h>
po wglMakeCurrent:
glewInit();
if (WGLEW_EXT_swap_control) wglSwapIntervalEXT(0);
V driveru se ale toto chování dá obvykle potlačit a nastavit to pevně. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 9. leden 2010, 17:22:29 Předmět: |
|
|
aha diky moc
EDIT je jeste nejaka moznost mi nejdou knihovny ani z oficialni stranky vim ze se to muze na kazdym PC udelat v nastaveni GK ale je to celkem neprakticky |
|
Návrat nahoru |
|
 |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 23. leden 2010, 15:57:31 Předmět: |
|
|
Tak mam dalsi problem potreboval bych neco jako timer v glutu ale zaclenit do nehe kodu viz vyse.Aby se dany blok volal treba jen jednou za 10sekund tak jestli ma nekdo nejaky napad? |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 23. leden 2010, 16:04:48 Předmět: |
|
|
Docela dobrej nápad je naprogramovat ten timer.  _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 23. leden 2010, 16:46:42 Předmět: |
|
|
No to chapu ale nejakou napovedu jak to udelat nejak mi to nejde vzdy se to pri vice fps provede vicekrat coz neni vlastne timer tak nevim jak to udelam proto se ptam |
|
Návrat nahoru |
|
 |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 23. leden 2010, 21:00:24 Předmět: |
|
|
vedel by mi teda nekdo poradit prosim? |
|
Návrat nahoru |
|
 |
Deluxe

Založen: 31. 07. 2007 Příspěvky: 235 Bydliště: Oslavany
|
Zaslal: 23. leden 2010, 21:09:26 Předmět: |
|
|
Pokud mas mnereni FPS, tak predpokladam mas i nejakou funkci, ktera ti rekne kolik ubehlo casu od spusteni aplikace, pak ti staci uplne jednoducha podminka:
kód: |
if( (get_current_time() - last_time) > "tvuj_cas" )
{
last_time = get_current_time();
// Sem das kod, kterej se ma provest jen jednou za "tvuj_cas" :)
}
|
Kde get_current_time() je funkce ktera vrati cas. Je to asi nejjednoduzsi zpusob, ale neosetri pripad, kdy mas nizsi fps a potrebujes ten kod spustit casteji. |
|
Návrat nahoru |
|
 |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 23. leden 2010, 21:34:25 Předmět: |
|
|
aha diky hned to pujdu vyzkouset,pouzivam funkci clock() (ctime) ktera vraci cas v milisekundach od spusteni programu,jinak co myslis tim nizsi fps dejme tomu ze to chci spoustet kazdou sekundu to mi staci vlastne 1fps pokud se nepletu ale v tom pripade kdybych potreboval poustet kazdou milisekundu potrebuju fps 1000+.takze pri 1000fps chci aby se pustil jednou za sekundu pri 500fps chci 2krat
kód: |
1000/fps //vysledny cas zpusteni cyklu
|
to asi pro moje potreby staci ale stejne narazim na problem pri 1fps se provede kod jednou za sekundu takze to nemuzu provest 1000krat takze narazim na problem ze pri cca 33fps se akce provede akce 33krat za sekundu coz je jeste spravne ale pri 30fps se uz musi provest vice nez 33krat coz uz neni podle me mozny |
|
Návrat nahoru |
|
 |
Quimby
Založen: 21. 04. 2009 Příspěvky: 51
|
Zaslal: 23. leden 2010, 22:07:30 Předmět: |
|
|
ale ted kdyz nad tim uvazuju kdyz bude mit nekdo fps pod 33 tak je to spis problem jeho pc a ne mojich optimalizaci ja se snazil |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 23. leden 2010, 22:20:13 Předmět: |
|
|
no ak chces nieco pustat napr stokrat za sekundu ale aplikacia ide iba 10fps. tak ked sa k tomu dostanes tak to mozes pustit desatkrat za sebou. kolko casu uplinulo? aha 35 ms tak to pustim 3 krat. (potom tu ale nastava velky problem s tym ak nieco co ma bezat kazdych 10 ms trva beh 20ms. to potom sa dostaneme do nekonecnej slucky co treba osetrit co ja viem ze moze to bezat maximalne 10 krat za sebou. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
|