Kezdőoldal » Számítástechnika » Programozás » OpenGL-be glDrawArraysInstance...

OpenGL-be glDrawArraysInstanced függvénnyel rajzolt objektumokra lehet alkalmazni a frustum culling-ot valahogy?

Figyelt kérdés

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.


2019. jún. 8. 18:30
 1/2 anonim ***** válasza:
Biztos fogsz erre itt választ kapni, biztos.
2019. jún. 9. 13:54
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:

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.

2019. jún. 10. 00:05
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!