OpenGL-be glDrawArraysInstanced függvénnyel rajzolt objektumokra lehet alkalmazni a frustum culling-ot valahogy?
Ugye egy olyan szinteret akarok kirajzoltatni, ahol egy objektumból rengeteg példány van. Ilyen több tízezer darab. Gondoltam megoldom ezzel az eljárással. veszteni nem veszthetek vele.
Na igen. Csak sokmindent kirajzol a program a kamera látószögén kívül. Ami nem épp elegáns megvalósítás.
Az első megoldást egy külföldi fórumon olvastam. Hogy a rajzolás előtt egy dinamikus tömböt mindíg kiüritem, és feltöltöm azokkal a koordinátákkal ahova kell kerüljön valami. Ez szerintem lassu megoldás lenne.
A második az az, hogy shaderbe alkalmazzuk a vágásokat. De ha jók értelmeztem, ezek a vágások videókártya előtt alkalmazandók. Tehát nem a shaderbe, hanem a cpu-n közvetlenül.
A harmadik, hogy átalakítom a programot hogy egyessével rajzolja ki a dolgokat. Ez tűnik a leggyorsabbnak.
Visszatérve a shader-ös vágáshoz. A glDrawArraysInstanced függvény lelimitálja az fps számot 60-ra. Akárhány objektumot kell kirajzolni. Tehát akár 10-et, akár 100000-ret. Nem tudom hogy ez mennyire jó, vagyis jó. Mert fix a 60 fps. De az a rossz hogy ha a dinamikusan változó objektumokat is beletesszük, akkor ez csak lejjebb mehet.
Bármilyen tanácsot elfogadok. Számba veszek minden lehetséges dolgot. De valahogy úgy érzem el kell felejtenem a instancing-et.
Várom a tanácsokat, amiket elöre is köszönök.
Helló!
"Na igen. Csak sokmindent kirajzol a program a kamera látószögén kívül."
Ha a rajzolás alatt raszterizációt értesz, akkor ez így nem teljesen igaz.
A vertex shaderen keresztül megy minden vertex és a vágás után csak olyan háromszögek kerülnek a fragmant shader-be, amelyek nem lógnak ki a képernyőből és nincsenek átfedésben sem. Ehhez neked semmit sem kell tenned a GL elintézi.
Ha egy komplexebb geometria biztos, hogy nincs benne a kamera gúlájában akkor a vertex shaderben teljesen fölösleges számolgatni. Pl. becsomagolod a szörnyedet egy gömbbel és innentől kezdve már csak lineáris algebra feladat a cpu-n.
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!