Keresés

Új hozzászólás Aktív témák

  • kisfurko

    senior tag

    válasz stevve #3 üzenetére

    Pedig igaza van. Grafika programozásban baromira nincsenek semmilyen komponensek, meg mindenféle csoda dolog. Van az API és slussz. Létrehozol erőforrásokat, piszkálod azokat, állapotokat állítasz be a rajzolás előtt, meg rajzolsz. Viszont nem lehet mindent tetszőlegesen kombinálni. Pl. nem rajzolhatsz lockolt pufferből, bizonyos beállítások nem kompatibilisek egymással a textúra-mintavételezőben, a ROP-ban stb. Ugyanígy a shader program sem írhat akárhogy, vagy olvashat máshogyan, mint ahogyan deklarálva van a bemenet. Figyelni kell, hogy az előző fokozatból jövő adatok tényleg úgy nézzenek ki, mint ami kell. Amikor sokezer dolgot rajzolsz ki, majd minden dologhoz egyedi textúra-mintavételező, ROP és egyéb kombinációval, és mindez képenként változik, na akkor teszteljed le. A DirectX runtime jelenti az összes érvénytelen kombinációt, no de csak debugnál. Ekkor, természetesen egészen más sebességgel fut, mint release libraryvel. Csomó időbe kerül, amíg rájössz, hogyan lehet reprodukálni debug alatt, ha rájössz. Szóval totál kiszámíthatatlan. Elég egyszer egy rossz kombinációt beadni, a legközelebbi device resetig jöhetnek a mellékhatások. Ha szerencséd van, a következő state change elmúlasztja. Hidd el, a legjobbaknál is becsúszik egy ilyen hiba.
    Beszélsz itt automatizált tesztekről egy interaktív programnál...
    Aztán vegyük a teljesítményt. Kb. nulla információ van arról, hogy milyen állapotváltás mennyi időt igényel, vagy hogy mi az, amit még meg tudsz változtatni némi késleltetés nélkül. Többnyire próbálgatással deríted ki, hogy milyen paraméterek alapján sorrendezd a rajzolásokat, ami persze egy másik kártyán megint más lehet. Aztán néha kiderül, hogy ami az API leírása szerint gyorsabb lenne, az nem gyorsabb :)
    Aztán vannak olyan dolgok is, hogy a gyártó profilere egyszerűen szétfagy, pedig a saját profiler driverével megy. Úgy igen nehéz teljesítményre gyúrni...

Új hozzászólás Aktív témák