Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 2. duben 2010, 14:36:58 Předmět: Manage textur |
|
|
Zdar,
prikrocil jsem k texturovani a peru se tady s jenim problemem. Ve scene mam priblizne 550 objektu, ze kterych aspon 350 ma vlastni texturu. Jak jsem to pocital tak kdyz budu mit textury okolo 2-3MB tj okolo 800MB z pameti. Resi se toto nejaky nepretrzitym streamem z disku nebo jak to funguje? A to pocitam klasicky diffuse textury. S bumpmappingem to bude 2x tolik :/
Doufam ze se da pochopit jak to myslim. Jatro |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 2. duben 2010, 15:23:38 Předmět: |
|
|
To máš teda pěkně velký textury. Používáš kompresi? Taková komprimovaná 1024x1024 DXT1 má 512 KB (bez mipmap). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 2. duben 2010, 19:08:19 Předmět: |
|
|
]semo[: pouzivam DXT3 ale s mipmapama, zkusim je udelat nejaky bez mipmap jak se to projevi na vzhledu. |
|
Návrat nahoru |
|
 |
posila
Založen: 29. 07. 2007 Příspěvky: 201
|
Zaslal: 2. duben 2010, 20:47:41 Předmět: |
|
|
Textury ve kterych nepotrebujes alfakanal (nebo ti staci alfa jen 0 a 1) komprimuj v DXT1 |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 2. duben 2010, 22:06:20 Předmět: |
|
|
jo tak to je moje demence, tedka bez mipmap je to mnohem lepsi a na vzhledu to neni poznat.
posila: diky, tedka sem to zacal pouzivat |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 24. duben 2010, 14:39:14 Předmět: |
|
|
Tak jsem se znovu dostal do problemu. Potreboval bych vedet jak vyresit, kdyz mam treba 20 objektu co maji na sobe stejnou texturu tak aby se ta textura nacetla jenom jednou do pameti a dal se na ni odkazovalo pres index v poli. Nejaky kus kodu jsem stvoril ale funkcnost byla tak na 40% protoze se vzdycky podarilo tu texturu zajistit jenom pro 3 objekty - totalne nepouzitelny.
Nebyl by nejakej kus pseudo kodu jak to vyresit? docela si s tim lamu hlavu a nenapada me jak osetrit ten index.
Edit: jeste me napadlo, jestli by se ty objekty nedaly pri exportu do souboru nejak sortovat podle jmena textury aby se usetrilo co nejvic mista v pameti.
Diky Jatro |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 24. duben 2010, 15:09:10 Předmět: |
|
|
Já mam na textury napsaný "manager". Mám vytvořenou
V pseudokodu nějak takhle:
kód: |
class MyTexture
{
Texture tex;
String name;
String fileName;
TexSettings settings;
}
class ManagerTextur
{
HashMapa <String, MyTexture>
MyTexture getTexture(name)
{
return HashMapa[name];
}
}
....
class Model
{
MyTexture texture;
void BindTexture ()
{
texture = ManagerTextur.getTexture(name);
}
void Render()
{
setTexture(texture.tex);
RenderModel();
}
}
|
V hashMapě mam načtený postupně všechny textury, který potřebuju... když pak renderuji model, tak má u sebe pointer na MyTexture a jenom ho vykreslím s texturou, která je v tom classu uložená. |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 24. duben 2010, 18:49:20 Předmět: |
|
|
perry: mam dojem ze jsme si nerozumeli. Pokud jsem dobre pochopil to co jsi mi posilal tak je to nacteni textury do jakysiho pole HashMapa. Ja potrebuju zredukovani tech textur. Tady je screen co ja myslim -> nacist jenom jednu texturu co jsou v tom obdelniku a dal se na ni nejak odkazovat abych ji nemusel nahrat 10x do pameti.
Doufam ze u toho nejsem blbec  |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 24. duben 2010, 19:11:04 Předmět: |
|
|
No vždyť jo... tak to moje řešení taky funguje... V HashMapě nelze mít 2x stejný klíč, takže pokud ji přidáváš podruhý, tak to hodí výjimku... |
|
Návrat nahoru |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 24. duben 2010, 20:21:22 Předmět: |
|
|
Tam asi chybí ta nejdůležitější část, a sice:
kód: |
Texture getTexture(string name) {
if (!HashMapa.contains(name)){
HashMapa[name] = loadTexture(name);
}
return HashMapa[name];
}
|
neboli všechny požadavky na textury jdou přes manager a ten buď vrátí už načtenou
texturu nebo ji načte a uloží si ji do seznamu (a vrátí ji, samozřejmě) _________________ Mám strach |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 24. duben 2010, 20:34:56 Předmět: |
|
|
Quiark: jojo neco podobnyho jsem tam hledal a nevidel, tak proto jsem takle odpovedel. |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 24. duben 2010, 21:27:59 Předmět: |
|
|
Jo no to jsem si nějak neuvědomil... bral jsem to jako kostru... |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 25. duben 2010, 18:01:16 Předmět: |
|
|
tak dekuju, vyresil jsem to k svoji dokonalosti.
jeste takova uplne tupa otazka, jak je to s filtrovanim textur?
GL_NEAREST = bilinear
GL_LINEAR = trilinear?
nejak mi to nedochazi. xD
dik  |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 25. duben 2010, 18:26:34 Předmět: |
|
|
GL_LINEAR = linear
GL_NEAREST_MIPMAP_LINEAR = bilinear
GL_LINEAR_MIPMAP_LINEAR = trilinear _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Játro.m
Založen: 01. 02. 2010 Příspěvky: 230
|
Zaslal: 25. duben 2010, 19:13:52 Předmět: |
|
|
diky, jeste jedna takova mala technicka, zavisi backface culling v opengl na normale? kdyz nastavim culling na GL_BACK tak to u nekterejch objektu vypada jak kdyby tam byl GL_FRONT. Normaly mam nejspis spravny - osvetleni je v pohode. Nejak me nenapada co se da podelat na 3 funkcich aby to takle blblo.. |
|
Návrat nahoru |
|
 |
|