.[ ČeskéHry.cz ].
Začátky v OpenGL

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
dadajax



Založen: 29. 07. 2007
Příspěvky: 26

PříspěvekZaslal: 2. září 2007, 17:27:22    Předmět: Začátky v OpenGL Odpovědět s citátem

Nakonec teda přecházím na OpenGL, ale vyskytlo se několik problémů které mi nejsou úplně jasné.

1) Když jsem používal jen SDL, vykresloval jsem jen okolí hráče. Teď ale nevím jestli by to bylo v OpenGL správné. Napadlo mě, že lepší řešení by bylo celou mapu vykreslit při inicializaci, a potom už jen pohybovat kamerou. Protože hra by měla být 2D, používám k zobrazování gluOrtho2D(). Pro pohyb s kamerou bych chtěl použít funkci gluLookAt(), jenom mi není jasné několik věcí:
-první 3 parametry značí souřadnice kamery. Chápu že při pohybu hráče budu měnit hodnotu x a y, jen nevím jaká má být hodnota z? Když používám gluOrtho2D tak je nastavena ořezávací rovina near na -1, takže bych měl použít nějakou hodnotu menší než -1 ?
-další 3 parametry jsou souřadnice bodu na který se kamera dívá, takže pokud tomu rozumím dobře, měly by být shodné s prvními třemi parametry (až na hodnotu Z)
-poslední 3 parametry nechápu vůbec, proto budu rád když se mi to pokusíte nějak "jednoduše" vysvětlit Wink

2)Nakreslil jsem čtverec který jsem otexturoval, ale výsledek je ten, že místo čtverce mám obdélník. Zjistil jsem že je to závislé na poměru stran okna a čtverec se vykreslí jen pokud je poměr stran 1:1. Hledal jsem kterým příkazem se to upravuje, ale bohužel jsem nic nenašel.

No a nakonec bych se chtěl zeptat jestli nevíte o nějakých dobrých článcích o tvorbě 2D her pomocí OpenGL? Doteď jsem čerpal z NeHe tutoriálů a článků na Rootu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1824

PříspěvekZaslal: 2. září 2007, 17:35:10    Předmět: Odpovědět s citátem

1) namiesto gluLookAt mozes pouzivat normalne glTranslate a glRotate - skus si, co to spravi:
kód:
glTranslatef(5,5,0);  //nastavis "kameru"
for() {  // vykresli objekty
glPushMatrix();
  glTranslatef(panak[i].pos);
  glRotatef(panak[i].rot);
  nakresliPanaka();
glPopMatrix();
}


2) precitaj si manual k gluOrtho2D a glViewport a vyskusaj si co to robi

- hra je sice 2D, ale objekty vykresluj s roznou Z suradnicou, aby sa ti spravne zoradili na/pod seba.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
igor



Založen: 28. 07. 2007
Příspěvky: 196

PříspěvekZaslal: 2. září 2007, 17:45:28    Předmět: Odpovědět s citátem

1) Klidne muzes vykreslovat jen okoli hrace, muzes k tomu pouzit normalni zastaraly immediate mode - glBegin glEnd zpusob (v jednoduche 2D tile-based hre by vyhody jinych zpusobu mely byt zanedbatelne, ale muzes to zkusit i napr. pres vertex arrays, nebo level rozdelit na ruzne vetsi ctverce a vykreslovat najednou jen ty potrebne).

Ve 2D doporucuji pouzivat spis glTranslate nez gluLookAt (ta ma jako parametry bod, ve kterem se nachazi kamera, bod, na ktery se "diva" a vektor, ktery smeruje nahoru - napr. pri kamere a bodu na ktery se diva lezicich na plose se stejnym y, je ten vektor v "normalnim" pripade 0 1 0 - muzes si jej predstavit jako vektor, ktery smeruje "od brady k celu")

2) Musis mit spravne nastavene okno, gluOrtho2D a glViewPort
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dadajax



Založen: 29. 07. 2007
Příspěvky: 26

PříspěvekZaslal: 3. září 2007, 11:35:07    Předmět: Odpovědět s citátem

Díky za rady, už mám nějakou matnou představu jak to udělat, tak uvidíme jestli to vyjde. Teď už konečně chápu i tu funkci gluLookAt, ale raději vás poslechnu a budu používat glTranslate..

EDIT: Super, už to funguje Smile jsem v tom hledal zbytečné složitosti..teď už jen doladím pár maličkostí a je to.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna