DSX Engine 3D - Delphi és Lazarus

Elérkezettnek látom az időt arra, hogy lassan publikussá tegyem mind azt, amin 2007 óta dolgozom. Egy olyan szoftver motor készítésén fáradozom, amely lehetőséget nyújt a Delphi és Lazarus környezetben 3D alkalmazások készítésére. Az eddigi eredményeimet és tapasztalataim kívánom megosztani a tisztelt közönséggel, és természetesen várom a tanácsokat, ötleteket.

Friss topikok

  • Tommy DSX: @syam: Köszönöm! :) És remélem az új képek is hasonlóan tetszeni fognak. (2009.05.12. 08:22) Domborzat

Naptár

december 2024
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

Textúra kezelés

2009.05.27. 21:27 | Tommy DSX | Szólj hozzá!

Azért írom le kissé szájbarágósabban a témát, hogy a kevésbé hozzá értők számára is világos legyen a dolog.

A 3D megjelenítés során a felhasznált képeket - legyen az bármilyen tartalmú – textúráknak tekintjük, és akként is kezeljük. Tehát minden, a képszerkesztő programból kikerülő kép, további munkálatokra szorul. Ezek a munkálatok általában egyszerű konvertálási folyamatok.

            A legtöbb motor képes különböző fájlformátum, textúra ként való alkalmazására, ezek a formátumok általában: BMP, TGA, PNG, JPG, DDS.

            Azonban a textúrák sajátos képek, amelyek használatakor bizonyos szabályokat figyelembe kell venni. Az egyik ilyen sajátosság a méret. A 3D alkalmazások többsége egyenlő oldalhosszúságú, és a 2 valamely hatványaként méretezett képeket használ textúraként. (Ez memóriarendezési okokból adódik). Tehát a textúráink mérete általában: 64x64, 256x256, 512x512, 1024x1024 illetve a legtöbb videokártya maximálásian a 2048x2048-as textúra méretet fogadására képes.

 

            Az egyes fájlformátumok tulajdonságait megvizsgálva:

 

A BMP fájl a legegyszerűbb bitmap- kép, amely természetesen rendelkezik tömörítési technikával, persze ez a tömörítés csak lemezterület megtakarítására szolgál a megjelenítéshez a képet a memóriába tömörítetlenül tárolja program. Így egy kép, memóriában foglalt mérete:

Szelesség*hosszúság*byte szám. Vagyis egy 1024*1024 pixeles kép, amit 32 biten tároltunk (4 Byte) a memóriában 1024*1024*4  = 4194304 Byte vagyis 4096 Kbyte és ez 4 MB. Bár a megjelenített kép minősége a lehető legjobb, viszont a legtöbb memóriát is igényli.

           

            A TGA, PNG és JPG formátumokról általában elmondhatjuk, hogy funkcionálisan jóval több tulajdonsággal rendelkeznek, mint a BMP. Tömörítésük sokkal hatékonyabb, de mint tudjuk, például a JPG esetén veszteséges a tömörítés. Továbbá a memória felhasználás terén ugyan azzal a ténnyel kell szembesülnünk, mint a BMP esetén, vagyis a kép megjelenítéséhez viszonylag nagy memória igény társul. A lemezen való helyfoglaláshoz használt tömörítés nem egyenlő a memóriaigénnyel. Ezeket a képformátumokat a motornak, amennyire lehetséges tömörítenie kell a felhasználáshoz, és ez idő veszteséggel járhat, vagyis lassul például a betöltési folyamat.

 

            Végül a DDS formátum, amelyet kimondottan játékszoftverek számra fejlesztettek. DirectDraw Surface. Ez a formátum a fentiekhez hasonlóan tömörített formátum, de már olyan formában tömöríti a képet, hogy a motor számára nincs szükség további tömörítésre, azt azonnal a memóriába képes olvasni és onnan közvetlenül használni is. A lemezen tárolt méret azonos lesz a memória igénnyel. A DDS formátum számos tulajdonsággal rendelkezik. Ezek közül a DSX Engine, a DXT belsőformátumok meghatározását, preferálja elsősorban.

            DXT1 – 4 bpp RGB (no alpha) formátum. A kép pixelei 4 bit per pixelként lesznek eltárolva RGB komponens alapján. A legkisebb memória igényű formátum.

            DXT1 – 8 bpp ARGB (1 bites alpha). A kép pixelei 8 bit per pixelként lesznek eltárolva, és a formátum már tartalmaz egy alfa csatornát, amely gyakorlatilag 1-0 értékekkel bír (ezért 1 bites), tehát a csatornában annyit tárol, hogy megjelenik-e a pixel vagy sem.

            DXT3 – 8 bpp ARGB (explicit alpha). A kép pixelei 8 bit per pixelként lesznek eltárolva, és a formátum már tartalmaz alfa csatornát, amelyben a pixelhez rendelt áttetszőség mértékét tároljuk. (Ez az áttetszőség természetesen csak arra az esetre érvényes, ha az alfa csatornával a kép részleteinek láthatóságára használjuk).

            DXT5 – 8 bpp ARGB (interpolált alpha). A kép pixelei 8 bit per pixelként lesznek eltárolva, és a formátum már tartalmaz alfa csatornát, amelyben a pixelek úgy mondd, interpolált értékeket kapnak, vagyis az áttetszőség sokkal szebb lesz, mint az előző formátum esetén.

Még egy formátumot kiemelnék a DDS belső formátumai közül és ez a 8.8.8.8 ARGB formátum, amely mint bitmap-et menti a képet, vagyis nem történik tömörítés, tehát a memóriában a fájl méretét foglalja, viszont a legszebb minőséget produkálja, mind szín komponensek, mind alfa csatorna használat terén. Ezt akkor érdemes használni a megjelenített minőség sokkal fontosabb, mint a memória használat mértéke.

 

A bejegyzés trackback címe:

https://dsxengine.blog.hu/api/trackback/id/tr961147678

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása