Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Cece

Založen: 28. 07. 2007 Příspěvky: 26 Bydliště: Skoro Brno
|
Zaslal: 17. říjen 2007, 20:11:48 Předmět: Direct3D - pomalé vykreslování |
|
|
Zdravím,
jako projekt do školy jsem si neprozřetelně vybral porovnání výkonu OpenGL a Direct3D (se kterýma mám malé zkušenosti ).
Po několika dnech mám program vykreslující tutéž scénu podobnými prostředky (mimo jiné vertex buffery), ale Directy mají podezřele špatné výsledky. OpenGL má téměř dvojnásobně větší FPS.
Snažil jsem se, aby obě varianty byly co nejpodobnější (i co se týče struktury a volání funkcí), vykresluji asi 200 tisíc trojúhelníku s jednou texturou a dvěma světly.
Tady přikládám spustitelný EXE a zdrojáky, snad si někdo všimne, co je špatně, předem děkuji za jakékoliv podněty:
http://www.stud.fit.vutbr.cz/~xrehan00/BenchmarkCece.zip
(zdrojáky nejsou zrovna ukázkově přehledné, ale snad to půjde pochopit ) _________________ Co můžeš udělat dnes, tak to raději udělej, nebo bys na to do zítřka zapomněl. |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 17. říjen 2007, 21:22:40 Předmět: |
|
|
Předpokládám, že chceš porovnávat optimalizaci konkrétních ovladačů pro dané API, jinak  |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 17. říjen 2007, 21:23:46 Předmět: |
|
|
Tento test nema moc velky vyznam. Ten vykon by mel byt priblizne stejny, jinak delas neco spatne. Uvnitr driveru stejne OpenGL i Direct3D pouzivaji spolecny interni interface (minimalne na Vista), ktery pak komunikuje s hardwarem. Maximalne tam najdes, ktera cast 3D API neni podporovana primo a driver to resi jinak, sloziteji. Overis jen kvalitu driveru, nic vic.
Kdyz budes pouzivat hodne draw-callu (tisic a vic), OpenGL z toho vyjde lepe, protoze jede v user space, zatimco D3D9 jede v kernel space a trochu tim trpi. _________________ AMD Open Source Graphics Driver Developer
Naposledy upravil Marek dne 18. říjen 2007, 03:24:52, celkově upraveno 1 krát |
|
Návrat nahoru |
|
 |
Cece

Založen: 28. 07. 2007 Příspěvky: 26 Bydliště: Skoro Brno
|
Zaslal: 17. říjen 2007, 22:14:48 Předmět: |
|
|
Přirozeně je pokaždé závěr takového porovnání, že je to záležitost ovladačů a použití knihoven.
Hlavní otázkou je, kde mám chybu
(částečně jsem to vylepšil zapnutím D3DCREATE_HARDWARE_VERTEXPROCESSING ) _________________ Co můžeš udělat dnes, tak to raději udělej, nebo bys na to do zítřka zapomněl. |
|
Návrat nahoru |
|
 |
MePHyst0
Založen: 28. 07. 2007 Příspěvky: 85 Bydliště: SVK/CZK
|
Zaslal: 17. říjen 2007, 22:15:32 Předmět: |
|
|
Eosie napsal: |
Tento test nema moc velky vyznam. Ten vykon by mel byt priblizne stejny, jinak delas neco spatne. Uvnitr driveru stejne OpenGL i Direct3D pouzivaji spolecny interni interface, ktery pak komunikuje s hardwarem. Maximalne tam najdes, ktera cast 3D API neni podporovana primo a driver to resi jinak, sloziteji. Overis jen kvalitu driveru, nic vic.
Kdyz budes pouzivat hodne draw-callu (tisic a vic), OpenGL z toho vyjde lepe, protoze jede v user space, zatimco D3D9 jede v kernel space a dost tim trpi. |
nemelo by to byt spis opacne?d3d ide v user mode, ked sa naplni command queue tak sa prepne do kernel(toto trva vacsnost)... |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 18. říjen 2007, 03:24:01 Předmět: |
|
|
MePHyst0 napsal: |
nemelo by to byt spis opacne?d3d ide v user mode, ked sa naplni command queue tak sa prepne do kernel(toto trva vacsnost)... |
God knows. Nejde ani tak o 3D API jako o driver. Ten musi v pripade D3D bezet v kernel modu (proto to tak trva asi), zatimco v GL jeho vetsi cast bezi v user modu. (v tomto white paperu viz predevsim graf "Figure 3" na strane 5)
Asi nenajdu vsechny prispevky ve vsech diskuzich, odkud jsem cerpal, nez jsem dosel k tomuto nazoru (mozna trochu prehnanemu - oprava vyse). Na tento jsem si ted vzpomnel:
citace: |
Also, you've got to remember that d3d is much slower for scenes of great complexity, such as engineering scenegraphs full of DCS'. To get reasonable performance from d3d all your data has to be static and/or dramatically pre-processed into the most batch optimal layout. In my business, that makes d3d a non-starter. I used to have 2 renderer implementations, GL and d3d9, but the d3d one performed so poorly with the same data as the GL implementation that it was never used and I stopped maintaining it. |
Zdroj. Je fakt, ze tohle nema co delat s hrama a mozna ani D3D9 nebylo urceno pro ten ucel, jaky autor citace potreboval, takze to pro D3D9 programatory nemusi nic znamenat. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
|