zkousel jsem to na:
- procesor: AMD Athlon XP 1800+
- grafika: nvidia GeForce 2 MX400, 64MB
- system: winXP
- ovladace: standardni ovladac z nvidia.com (verzi presne nevim, protoze jsem ho uz nekolikrat menil)
- jazyk: Delphi 6
a slo to i castecne emulovat pod linuxem (grafika fungovala, ale standardni win dialogy ne).
ještě bych rád přidal (to myslím obecně, nejenom na velikost textur), že používání různých vylepšení OpenGL sice může na první pohled působit lákavě, ale podívejme se například na Blender, kde píšou, že téměř polovina hlášených chyb souvisí s OpenGL.
Ale v OpenGL při správném používání a u korektně napsaných ovladačů žádné chyby IMHO nejsou. Je to pouze tím, že se v programech používají ne zcela korektní postupy a/nebo vylepšení.
Přesně tak, pokud se zobrazují objemová data (CT, MR snímky apod), musí (nebo měla) by být použita průhlednost. Ani ne tak speciální barvou, ale běžným formátem RGBA popř. Luminance+Alpha (pro snímky z MR asi běžnější). Rotační symetrii OpenGL nepodporuje, pouze opakování textury.
Na druhou stranu můžete objemové textury použít například pro vytvoření tělesa, které je jakoby vyřezané z nějakého materiálu. Potom se nezobrazuje celá krychle, ale pouze vyřezaná část. Právě zde se dá celkem rozumně využít opakování textury a udělat tak například procedurální dřevo nebo mramor.
3D textury podporuje ATI, u dalších akcelerátorů si nejsem jistý.
textura v opengl nemusi mat rozmer 2^n, moze mat lubovolny, ale opengl jej zmeni rozmer na najblizsiu mocninu dvoch, teda textura bude vyzerat menej kvaltine. na toto som prisiel este pri robeni map pre half-life a MSDN to potvrdzuje. pri extension ARB_texture_non_power_of_two (tak nejak) nie su podporovane mip-mapy!
No ale jak sam pisete, jde o extension k OpenGL, tzn. neni zarucene, ze Vam takove textury budou vsude korektne pracovat, zejmena na starsich (ne nutne horsich) strojich, kde je OpenGL 1.0.
Nemam nic proti extensions, ale tady v clanku se snazim popsat nejprve zaklady OpenGL, na rozsireni dojde az potom.
Dobry den,
muj prispevek patri jeste ke svetlum, ale ponevadz mam obavy zda si procitate take starsi prispevky pridavam jej i do teto diskuze
mam nasledujici problem:
svetlo jsem umistil nekam "ke stropu" doprostred sceny
pri kazdem Render() hned po glLoadIdentity() MODEL_VIEW matice jej znovu umistuji na stejnou pozici
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
presto pokud se otacim ve scene obraz se ztmavuje a zesvetluje a na obektech lze spatrit zcela jasne jak se svetlo pohybuje spolecne se mnou (kamerou)
co delam spatne?
dekuji za odpoved
ps. pouzivam ve scene take masking (pistolka v Ortho() modu ) a pokud zacnu pracovat se svelem ona pruhlednost kolem pistolky je jaksi mene pruhledna, pouze u svetla "jednicka na konci->bodove svetlo" je pruhlednost vpohode
Můžete prosím poslat popř. sem do diskuze nakopírovat schéma Vašeho kódu, tj. například:
glLoadIdentity();
nastavSvětlo();
rotuj();
kresli_scénu();
aby byly vidět posloupnosti operací?
U té pistolky: máte na mysli masking (maskování jedním bitem) nebo blending (alfa průhlednost)? S osvětlením by to nemělo mít nic společného, pokud tedy nenastavujete ambientní složku světla. Potom však stačí před vykreslením pistolky světlo vypnout (a pro urychlení i práci se Z-bufferem).