Az API-nak lehetõvé kell tennie a valósidejû leképezést, vagyis hatékonynak kell lennie. Az API-nak széles körû támogatással kell rendelkeznie.

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Az API-nak lehetõvé kell tennie a valósidejû leképezést, vagyis hatékonynak kell lennie. Az API-nak széles körû támogatással kell rendelkeznie."

Átírás

1 1. fejezet Bevezetés az OpenGL világába Az OpenGL kitûnõ térgrafikai API. De mi tesz egy alkalmazásprogramozási felületet kitûnõ térgrafikai API-vá? Ha ezt a kérdést szoftverfejlesztõknek tesszük fel, a legtöbben valószínûleg az alábbiakat fogják megemlíteni: Az API-nak lehetõvé kell tennie a valósidejû leképezést, vagyis hatékonynak kell lennie. Az API-nak széles körû támogatással kell rendelkeznie. Az API-nak egyszerûen használhatónak kell lennie. Az, hogy valami hatékony, persze gyakran attól függ, milyen szempontból nézzük. Sok alkalmazás olyan képkocka-lejátszási sebességet igényel, ami lehetõvé teszi a valósidejû interaktivitást, míg az olyan alkalmazások, mint a kapcsolat nélküli videószerkesz-

2 2 OpenGL röviden tõk, illetve a tudományos adatok terabájtjaival dolgozó vizualizációs programok lényegesen kevesebbel is beérik. Amennyiben a szûk keresztmetszet nem az adott alkalmazás, és az API-t is jól tervezték meg, az API hatékonysága mindig a megvalósítástól függ. Egy jó API-nak tehát elõ kell segítenie, és soha nem szabad hátráltatnia a hatékony megvalósítást. Általánosságban azt mondhatjuk, hogy egy API, amelynek a felépítése elõsegíti a hatékonyságot, lehetõvé teszi, hogy grafikushardver-architektúrák és számítógépplatformok széles körén megvalósítható legyen. Ezen felül egy jól tervezett API évekig népszerû marad, és a grafikushardver-architektúrák több generációján is fut (Lichtenbelt 1997). A legtöbb szoftverfejlesztõ számára azonban az API kérdése lényegében a következõ kérdéseket jelenti: Elérhetõ az API az én fejlesztõplatformomhoz?, és ami még fontosabb: Hozzáférhetõ a célközönség rendszerén?. Az OpenGL hardverarchitektúrák széles körén fut, és különbözõ megvalósításai jól dokumentáltak (Cojot 1996, Carson 1997, Kilgard 1997, McCormack 1998). A használat egyszerûségét viszont nem lehet teljesen objektív módon meghatározni vagy mérni. Szempont lehet, hogy az API gazdag szolgáltatáskészlettel rendelkezik-e, rugalmasan használható-e, következetes-e, vagy hogy miután megtanultuk, hogyan lehet vele megoldani egy adott leképezési problémát, építhetünk-e erre más hasonló feladatok megoldásánál. Ha ezeknek a kérdéseknek a többségére igennel felelünk, az annak a jele, hogy az API egyszerûen használható. Ha a hatékonyságot és a hozzáférhetõséget adottnak vesszük, újonc programozóként a használat egyszerûsége az, ami elsõdleges fontosságú a számunkra. Ebben a bevezetõ fejezetben az OpenGL általános felépítését vázoljuk fel, és megmutatjuk, milyen könnyû összeállítani egy egyszerû tesztprogramot. Amit a fejezetbõl megtanulhatunk Az 1. fejezetben az alábbiakkal foglalkozunk: Az OpenGL magas szintû leírása ebben a részben meghatározzuk, mi is az Open- GL, illetve bemutatjuk architektúráját, nyelvtanát, szolgáltatásait, illetve állapotlekérdezési mintáit. Segédkönyvtárak itt két olyan általánosan használt segédkönyvtárat (GLUT és GLU) mutatunk be, amellyel a legtöbb OpenGL-programozó biztosan találkozik munkája során. A fejlesztõkörnyezet ebben a részben az OpenGL-alkalmazások fejlesztéséhez szükséges fejállományokat és függvénykönyvtárakat mutatjuk be. Egy példaprogram elkészítünk egy kis méretû példaprogramot, hogy megmutassuk, milyen és hogyan fest egy OpenGL-program. Az OpenGL története ebben a részben arról tudhatunk meg többet, hogy honnan származik az OpenGL.

3 1. fejezet Bevezetés az OpenGL világába 3 Amit a fejezetbõl nem tanulhatunk meg A fejezet olvasása közben tartsuk észben a következõt: Amint a fejezetben felsoroljuk az OpenGL szolgáltatásait, olyan szolgáltatásokat és témákat is megemlítünk, amelyekkel az OpenGL röviden nem foglalkozik Mi az OpenGL? Az OpenGL a The OpenGL Graphics System: A Specification címû szabványleírásban meghatározott grafikus API. Az OpenGL-programok ennek a szabványnak a megvalósításait használják síkbeli (2D) és térbeli (3D) geometriai adatok és képek megjelenítésére. Az OpenGL-szabvány szerint a programozó számára az OpenGL egy parancskészlet, amely mértani testek leírását teszi lehetõvé két vagy három dimenzióban, más parancsai pedig azt szabályozzák, hogy ezek az objektumok hogyan képezhetõk le a képkockatárba (framebuffer). 1 Az OpenGL-t jellemzõen belépési pontok könyvtáraként valósítják meg (a GL az OpenGL névben a Graphics Library, vagyis grafikus könyvtár rövidítése [Kilgard 1997]), illetve olyan grafikus hardverként, amely támogatja ezt a könyvtárat (lásd az 1.1. ábrát). A 3D grafikához tervezett számítógéprendszerekben a hardver közvetlenül támogatja az OpenGL-nek szinte minden szolgáltatását. Ennek eredményeképpen az OpenGL könyvtár pusztán egy vékony réteg, amely lehetõvé teszi az alkalmazásoknak, hogy hatékonyan érjék el a hardver szolgáltatásait. A hardveresen nehezen megvalósítható magasszintû szolgáltatások például a magasszintû elemi típusok, látványgráfok és segédfüggvények támogatása nem részei az OpenGL-szabványnak (Carson 1997), de több könyvtár is rendelkezésre áll, amelyek támogatják ezeket. Egy ilyen könyvtárat késõbb, a fejezet GLU címû részében be is mutatunk. Az OpenGL nem tartalmaz támogatást az ablakok, a bemenet (egér, billentyûzet stb.) vagy a felhasználói felületi szolgáltatások kezeléséhez, mert a számítógéprendszerek jellemzõen platformfüggõ támogatást nyújtanak ezekhez. A GLUT könyvtár (lásd a fejezet késõbbi, GLUT címû részét) platformfüggetlen módon támogatja ezeket a szolgáltatásokat, és képességei kielégítik a legtöbb kis méretû alkalmazás és bemutatóprogram igényeit. Az egyes platformokhoz kötõdõ könyvtárakkal a kötet 8. fejezetében foglalkozunk. 1 Segal, Mark és Akeley, Kurt: The OpenGL Graphics System: A Specification, 2.0-s változat, szeptember, 2. oldal.

4 4 OpenGL röviden Ügyfél Alkalmazás Alkalmazás OpenGL-könyvtár OpenGL Kiszolgáló OpenGL-könyvtár OpenGL-könyvtár Grafikus hardver Grafikus hardver (a) (b) 1.1. ábra Két jellemzõ OpenGL-megvalósítás. Az (a) ábrán az alkalmazások OpenGL belépési pontok egy olyan könyvtárához kapcsolódnak, amely egy OpenGL alapú grafikus hardvernek ad át parancsokat. A (b) ábra egy ügyfél kiszolgáló rendszerû megvalósítást mutat. Itt az alkalmazások OpenGL belépési pontok egy olyan könyvtárához kapcsolódnak, amely egy hálózati protokollon keresztül adja át a parancsokat. A (helyi vagy távoli) kiszolgáló megkapja az utasításokat, és saját hardvere segítségével végzi el a leképezést Alapok és architektúra Az OpenGL állapotgép. Az alkalmazások az OpenGL függvényeit meghívva OpenGLállapotokat állítanak be, amelyek feladata, hogy meghatározzák egy elemi alakzat (primitív) végsõ megjelenését a képkockatárban. Alább azt láthatjuk, hogy egy alkalmazás vörösre állítja a színt, kirajzol egy pont primitívet, a színt kékre állítja, majd kirajzol egy második és egy harmadik pontot is: glcolor3f( 1.f, 0.f, 0.f ); // a vörös RGB színhármasként glbegin( GL_POINTS ); glvertex3f( -.5f, 0.f, 0.f ); // az elsõ pont XYZ koordinátái glend(); glcolor3f( 0.f, 0.f, 1.f ); // a kék RGB színhármasként glbegin( GL_POINTS );

5 1. fejezet Bevezetés az OpenGL világába 5 glvertex3f( 0.f, 0.f, 0.f ); // a második pont XYZ koordinátái glend(); glbegin( GL_POINTS ); glvertex3f(.5f, 0.f, 0.f ); // a harmadik pont XYZ koordinátái glend(); Ebben az esetben az OpenGL az elsõ pontot vörös színnel jeleníti meg, a másodikat pedig kékkel. Mivel a kód nem változtatja meg a színállapotot a harmadik pont kirajzolása elõtt, az OpenGL az utolsó pontot is kékkel jeleníti meg. (A fenti kódban a glcolor3f() egy RGB-színértéket határoz meg, a glvertex3f() egy csúcs xyz koordinátáit, az egyes primitíveket pedig a glbegin() és glend() függvények írják le, de ezeknél hatékonyabbak is léteznek, amelyeket a 2. fejezetben mutatunk be.) Az elemi alakzatok vagy primitívek egy vagy több csúcsból (vertex) állnak. A fenti példában minden pontot egyetlen csúcs jelölt; a vonalak és kitöltések két vagy több csúcsot igényelnek. A csúcsok saját színnel, mintázatkoordinátákkal és normál állapottal (illetve más csúcsállapotokkal) rendelkeznek. A vörös és kék pontokat kirajzoló fenti kódot így is átírhatnánk: glbegin( GL_POINTS ); glcolor3f( 1.f, 0.f, 0.f ); // a vörös RGB színhármasként glvertex3f( -.5f, 0.f, 0.f ); // az elsõ pont XYZ koordinátái glcolor3f( 0.f, 0.f, 1.f ); // a kék RGB színhármasként glvertex3f(.5f, 0.f, 0.f ); // a második pont XYZ koordinátái glend(); Az OpenGL mindig abban a sorrendben hajtja végre a parancsokat, ahogy azokat az alkalmazás elküldi neki. Ügyfél kiszolgáló alapú megvalósításnál (lásd az 1.1. ábrát) a parancsok az ügyféloldalon átmeneti tárba (buffer) helyezhetõk, így nem muszáj, hogy azonnal végrehajtódjanak, de az alkalmazások a glflush() meghívásával vagy tárcserével kényszeríthetik az OpenGL-t, hogy végrehajtsa a tárolt parancsokat. A korszerû processzorokhoz hasonlóan az OpenGL is csõvezetékrendszert (pipeline) használ a leképezéshez. Az OpenGL a képpont- és csúcsadatokat négy szakaszban csúcsmûveletek, képpontmûveletek, elemekre bontás (raszterizáció) és töredékmûveletek dolgozza fel, az eredményt pedig a képkockatárban vagy a mintázatmemóriában tárolja (lásd az 1.2. ábrát). Az alkalmazások kétféle adatot adhatnak át az OpenGL-nek leképezésre: csúcsadatokat és képpontadatokat. A csúcsadatokból képezõdnek le a síkbeli és térbeli mértani primitívek, például a pontok, a vonalak és a kitöltött primitívek (errõl további információt a 2. fejezetben találunk). A képpontadatokat az alkalmazások képpontok (pixelek) tömbjeiként határozzák meg, és arra utasíthatják az OpenGL-t, hogy a képpontokat közvetlenül a képkockatárban jelenítse meg, vagy másolja azokat a mintázatmemóriába, hogy késõbb mintázat-

6 6 OpenGL röviden térképekként legyenek felhasználhatók. Ezen kívül az alkalmazások ki is olvashatnak képpontadatokat a képkockatárból, valamint a tár egyes részeit a mintázatmemóriába másolhatják. Ezzel a témával részletesebben az 5. és 6. fejezetben foglalkozunk majd. Megjegyzés Az OpenGL mindig is rögzített funkciójú csõvezetéket alkalmazott; szolgáltatásainak rögzített készletét az alkalmazások az OpenGL állapotain keresztül vezérelhetik. A 2.0-s változattól kezdõdõen azonban az OpenGL megengedi, hogy az alkalmazások felülbíráljanak bizonyos csúcs- és töredékmûveleteket, úgynevezett csúcs- és töredékárnyékolókkal (shader), amelyek olyan apró programok, amelyeket egy árnyékolónyelven írtak. Az OpenGL-árnyékolók írásához az OpenGL Shading Language az alapmû, de a témát röviden érintjük az A függelékben is. Az OpenGL röviden csak a rögzített funkciójú csövezetékkel foglalkozik, az árnyékolókkal nem, mert kívül esnek a kötet tárgykörén. Csúcsadatok Csúcsmûveletek Elemekre bontás Töredékmûveletek Képkockatár Képpontadatok Képpontmûveletek Mintázatmemória 1.2. ábra Az OpenGL csõvezetékrendszere Csúcsmûveletek Az OpenGL az alkalmazásunktól kapott csúcsok mindegyikén a következõ mûveleteket hajtja végre: Transzformáció az OpenGL a csúcsokat objektumkoordináta-térbõl ablakkoordináta-térbe transzformálja. Ez persze jelentõs leegyszerûsítése a transzformáció folyamatának, amellyel részletesen a 3. fejezetben foglalkozunk. Megvilágítás amennyiben az alkalmazás bekapcsolta a megvilágítást, az OpenGL kiszámítja az egyes csúcsok megvilágítási értékeit. A megvilágítás a 4. fejezet témája lesz majd. Levágás amikor az OpenGL arra a megállapításra jut, hogy az adott primitív egyáltalán nem lesz látható, mert kívül esik a nézet terén, minden csúcsot elvet. Ha egy

7 1. fejezet Bevezetés az OpenGL világába 7 primitív csak részben látható, az OpenGL csonkolja, hogy csak a látható részt kelljen elemekre bontania. A csúcsmûveletek után az OpenGL elemeire bontja a primitívet, és a kapott adatokon töredékmûveleteket hajt végre Képpontmûveletek Az OpenGL az alkalmazásoktól kapott vagy azoknak továbbított minden képpontadattömbön képpontmûveleteket végez. Ezek a mûveletek gondoskodnak a bájtcserérõl, a feltöltésrõl és az eltolásról, amelyek ahhoz szükségesek, hogy a képpontokat különféle formátumokban lehessen fogadni és elküldeni. Egyes képpontmûveletek, például a képpontátvitel (pixel transfer; megfeleltetés, méretezés, kiegyenlítés), illetve a képkezelõ mûveletek részhalmaza kívül esik könyvünk keretein. Ha többet szeretnénk tudni róluk, lapozzuk fel az OpenGL Programming Guide 8. fejezetét (Drawing Pixels, Bitmaps, Fonts, and Images) Elemekre bontás Az elemekre bontás (raszterizáció) során a geometriai adatokból töredékek (fragment) jönnek létre. A töredékek olyan helyzeti, szín-, mélység- és mintázatkoordináták, illetve más adatok, amelyeket az OpenGL feldolgoz, mielõtt végül a képkockatárba írna. A töredékek tehát különböznek a képpontoktól, amelyek azok a fizikai helyek a képkockatármemóriában, ahol a töredékek tárolódnak. Az OpenGL egy töredéket jellemzõen egyetlen képponthelyhez társít, de azok a megvalósításai, amelyek támogatják a többszörös mintavételezést (multisampling), a töredékeket képpont alatti szinten tárolják. Az elemekre bontás szabályaival a The OpenGL Graphics System 3. fejezete foglalkozik. A legtöbb programozónak nem kell ismernie ezeket a szabályokat, hacsak nem olyan alkalmazásokat fejleszt, amelyek pontos pixelesítést követelnek meg. Az OpenGL az elemekre bontást a képpont alatti szinten határozza meg: a pont primitíveket matematikai pontokként, a vonal primitíveket matematikai vonalakként, a kitöltött primitíveket pedig olyan területekként kezeli, amelyeket matematikai vonalak határolnak. A többszörös mintavételezéstõl eltekintve a programozónak az ablakkoordináta-teret úgy kell elképzelnie, mint egy Descartes-féle hálót vagy rácsot, amelyben minden rácscella egyetlen képpontnak felel meg a képernyõn. Ezt észben tartva tekintsük át, hogyan hajtja végre az OpenGL az elemekre bontást: Pont primitívek elemekre bontásakor az OpenGL akkor hoz létre töredéket, ha a pont a képponthatáron belülre esik. A vonalakat az OpenGL úgy bontja elemeikre, hogy végpontjaik közé esõ töredékeket állít elõ. Általános szabályként azt mondhatjuk, hogy az OpenGL nem hoz létre a vonalszegmensek második, más néven kioldó csúcsának (triggering vertex) meg-

8 8 OpenGL röviden felelõ töredéket ez gondoskodik róla, hogy az azonos dõlésszögû összekötött vonalrészek ne rajzolják ki kétszer ugyanazt a képpontot. Az OpenGL a kitöltött alakzatok esetében akkor hoz létre töredéket, ha a képpont közepe az alakzat matematikai határain belülre esik. A matematikai határra esõ képpontközepekre külön szabályok vonatkoznak, amelyek biztosítják, hogy két, egymást át nem fedõ, de közös éllel rendelkezõ kitöltött primitív ne rajzolja ki kétszer ugyanazt a képpontot. Amikor az OpenGL az alapértelmezett nagyítási szinten bontja elemeire képpontadatok egy tömbjét, a képpontblokk minden képpontjához létrehoz egy töredéket. Ez persze csak leegyszerûsítése a raszterizáció folyamatának, de a kötetben nem foglalkozunk olyan, az elemekre bontás fázisát érintõ témákkal, mint a simítási pontok, vonalak és sokszögek, a széles pontok és vonalak, vagy a képpontnagyítás. Ezekkel részletesen az OpenGL Programming Guide-ban ismerkedhetünk meg Töredékmûveletek Az OpenGL minden töredéket alaposan feldolgoz, hogy meghatározza annak a képkockatárba írandó végsõ értékeit, illetve hogy egyáltalán a tárba kell-e írni az adott töredéket. Az OpenGL az elemekre bontás eredményeképpen kapott minden töredék esetében a következõ mûveleteket végzi el: Képponttulajdonlási teszt Ez a teszt lehetõvé teszi az OpenGL-nek, hogy akkor is helyesen jelenítse meg az adatokat, ha több egymást átfedõ ablak van jelen. Azok a töredékek, amelyek a képkockatárban olyan helyeknek felelnek meg, amelyeket eltakar egy ablak, elvethetõk vagy háttértárba menthetõk. Ollóteszt Amennyiben a képkockatár egy adott helye kívül esik az alkalmazás által meghatározott ablakkoordináták téglalapján, az OpenGL elveti a töredéket. Többszörös mintavételezési töredékmûveletek Az OpenGL a töredékek áttetszõségi (alfa) és fedési értékeit a többszörös mintavételezés szabályainak megfelelõen módosítja. Áttetszõségi teszt Ha egy töredék áttetszõségi vagy alfa értéke nem felel meg az alkalmazás támasztotta követelményeknek, az OpenGL elveti. Ez a részben vagy teljesen átlátszó töredékek elvetéséhez hasznos. Stencilteszt Az OpenGL összehasonlítja a képkockatár adott helyén tárolt stencilértéket, és az alkalmazás aktuális állapota alapján meghatározza, mit tegyen a töredékkel, és hogyan módosítsa a tárolt stencilértéket. A stencilteszt több célra is alkalmazható, például nem négyszögletes levágásra, árnyékokhoz, valamint építõ vagy konstruktív szilárdtest-geometriához (CSG, constructive solid geometry). Mélységteszt A mélységteszt akkor vet el egy töredéket, ha a töredék mélységértékének és a mélységtárban (depth buffer) tárolt értéknek az összehasonlításakor nem kap egyezést. Az OpenGL mélységtesztje a z-tárazás (z-buffering) egyik formája. Takarási lekérdezés Amikor egy takarási lekérdezés (occlusion query) aktív, az OpenGL minden olyan töredék esetében növeli egy számláló értékét, amely át-

9 1. fejezet Bevezetés az OpenGL világába 9 megy a mélységteszten. A takarási lekérdezés gyors láthatóságpróbát tesz lehetõvé az összetett jelenetekben. Keverés A keverés (blending) a töredék RGB szín- és alfaértékeit kombinálja a képkockatár adott helyén tárolt RGB- és alfaértékekkel. Az alkalmazások a keverést jellemzõen áttetszõ objektumok utánzására használják. Kiegyenlítés Amikor a képkockatár színpontossága kisebb a töredék RBG- és alfaértékeinek pontosságánál, az OpenGL egy megismételhetõ algoritmussal kiegyenlíti a töredék színét és áttetszõségét. A kiegyenlítést (dithering) a 24 bites képkockatárak széles körû elérhetõsége miatt ritkán használják. Logikai mûveletek Az OpenGL a végsõ színértéket az alkalmazás által meghatározott logikai mûveleteknek megfelelõen írja a képkockatárba. Mivel könyvünket tömör útmutatónak szántuk, a kötetben nem térünk ki minden töredékmûveletre. Az olló- és stencilteszttel, a többszörös mintavételezéssel, a takarási lekérdezéssel, a kiegyenlítéssel és a logikai mûveletekkel kapcsolatban az OpenGL Programming Guide ad részletes felvilágosítást Nyelvtan Az OpenGL-t több programozási nyelv is támogatja, és mindegyik saját kötést alkalmaz. A kötetben és a C++ példakódokban C típusú kötést használunk. A következõkben a C típusú kötés nyelvtani szabályait ismertetjük Típusok A C-kötésnél minden OpenGL-típusnevet a GL elõtaggal látunk el. A logikai Boolean típus például GLboolean lesz, a kétszeres pontosságú lebegõpontos érték típusa pedig GLdouble. A GLbyte, GLshort és GLint adattípusoknak elõjel nélküli változataik is vannak (GLubyte, GLushort és GLuint). Az OpenGL legfontosabb adattípusait az 1.1. táblázatban foglaltuk össze táblázat Az OpenGL adattípusai OpenGL-típus Bitek legkisebb száma Parancsutótag Leírás GLboolean 1 nincs Logikai érték GLbyte 8 b Elõjeles egész GLubyte 8 ub Elõjel nélküli egész GLshort 16 s Elõjeles egész GLushort 16 us Elõjel nélküli egész GLsizei 32 nincs Nemnegatív egész méret

10 10 OpenGL röviden OpenGL-típus Bitek legkisebb száma Parancsutótag Leírás GLsizeiptr egy mutató bitjeinek nincs Mutató egy nemnegaszáma tív egész méretre GLint 32 i Elõjeles egész GLuint 32 ui Elõjel nélküli egész GLfloat 32 f Lebegõpontos érték GLclampf 32 nincs Lebegõpontos érték a [0, 1] tartományra szorítva GLenum 32 nincs Felsoroló érték GLbitfield 32 nincs Becsomagolt bitek GLdouble 64 d Lebegõpontos érték GLvoid* egy mutató bitjeinek nincs Mutató bármilyen száma adattípusra; egyenértékû a C/C++ void* típusával Parancsok A C-kötés az OpenGL-parancsokat C-hívású függvényekként valósítja meg, amelyek gl elõtagot kapnak. Az OpenGL Enable parancsának végrehajtásához például az alkalmazásunknak a glenable() függvényt kell meghívnia. Kötetünkben az OpenGL-parancs és az OpenGL-függvényhívás ugyanazt jelenti. Általánosságban, az OpenGL-ben nincs parancstúlterhelés. 2 Az azonos szerepû, de másmás számú és típusú argumentumot váró parancsok támogatásához az OpenGL egy legfeljebb négy karakterbõl álló utótagot fûz a parancsnevekhez. Az elsõ karakter az argumentumok számát jelzi, a második karakter vagy a második-harmadik karakterpár a paraméter típusát, az utolsó karakter pedig (ha jelen van) a v, ami arra utal, hogy a függvénynek argumentumként egy címet kell átadni. Nézzünk egy példát: // RGB-színérték meghatározása három lebegõpontos értékkel GLfloat red=1.f, green=1.f, blue=1.f; glcolor3f( red, green, blue ); // RGBA-színérték meghatározása négy elõjel nélküli bájttal GLubyte r=255, g=255, b=255, a=255; glcolor4ub( r, g, b, a ); // RGB-érték meghatározása három short címével GLshort white[3] = { 32767, 32767, }; glcolor3sv( white ); 2 Az OpenGL 1.5-ös változata túlterheli az átmeneti tár objektumaival dolgozó parancsokat, ahogy ezt a 2. és 7. fejezetben be is mutatjuk.

11 1. fejezet Bevezetés az OpenGL világába Felsorolók A C-kötés az OpenGL felsoroló értékeit a C elõfeldolgozó segítségével határozza meg, és a neveiket GL_ elõtaggal látja el. Például ha az OpenGL-változatot jelzõ karakterláncot szeretnénk lekérdezni a VERSION felsorolással, az alkalmazásnak a glgetstring( GL_VER- SION ); hívást kell alkalmaznia Állapotok és lekérdezések Állapotgépként az OpenGL nem mûködhet egy hely nélkül, ahol az érvényben levõ állapotértékeket tárolhatja. Az OpenGL az állapotát egy úgynevezett GL-környezetben (GL context) tárolja. Az ezt megtestesítõ leképezési környezetek (rendering context) létrehozását, megsemmisítését és másolását platformfüggõ felületek teszik lehetõvé. A leképezési környezetek kezelésével a 8. fejezetben foglalkozunk, de a könyv során a GLUT könyvtárat használjuk majd, amely a háttérben kezeli a leképezési környezetet. További információ a fejezet késõbbi, GLUT címû részében található; most elég annyit tudnunk, hogy az OpenGL az állapotot egy leképezési környezetben tárolja. Ahogy az alkalmazásunk az OpenGL-állapotot megváltoztató parancsokat ad ki, ezeket a változásokat az aktuális leképezési környezet tartja számon. Az OpenGL több parancsot is a rendelkezésünkre bocsát az állapot beállításához. A programozók a leggyakrabban a glenable() és gldisable() parancsokkal találkozhatnak: void glenable( GLenum cél ); void gldisable( GLenum cél ); Ezekkel a parancsokkal OpenGL-szolgáltatásokat helyezhetünk bekapcsolt vagy kikapcsolt állapotba. A cél adja meg, melyik szolgáltatást kívánjuk bekapcsolni vagy letiltani. A fontosabb cél felsorolásokat a könyv az egyes szolgáltatások ismertetésekor tárgyalja. Az érvényes cél felsorolások teljes listáját az OpenGL Reference Manual glenable címszavánál találhatjuk meg. OpenGL-változat: 1.0 vagy újabb A glenable( GL_DEPTH_TEST ) meghívásával például a mélységteszt (vagy z-tárazás) szolgáltatást kapcsolhatjuk be. Miután az alkalmazásunk kiadta ezt a parancsot, az Open- GL a következõ primitíveket mélységteszttel fogja leképezni. Ha a kódunk késõbb meghívja a gldisable( GL_DEPTH_TEST)-et, hogy kikapcsolja a szolgáltatást, az ezt követõ primitívek leképezéséhez az OpenGL már nem fog mélységtesztet alkalmazni. Alaphelyzetben az OpenGL legtöbb szolgáltatása kikapcsolt állapotban van. Valójában ekkor csak két szolgáltatás él: a kiegyenlítés (GL_DITHER) és a többszörös mintavételezés (GL_MUL- TISAMPLE).

12 12 OpenGL röviden A glisenabled használata Azt, hogy egy szolgáltatás jelenleg bekapcsolt vagy kikapcsolt állapotú-e, a glisenabled() paranccsal kérdezhetjük le: GLboolean glisenabled( GLenum érték ); Azt adja vissza, hogy egy OpenGL-szolgáltatás be van-e kapcsolva vagy sem. Az érték bármilyen OpenGL-felsorolás lehet, ami érvényes cél paramétere a glenable(), illetve a gldisable() parancsnak. A glisenabled() GL_TRUE-t ad vissza, ha az érték bekapcsolt állapotú, és GL_FALSE-t, ha nem. OpenGL-változat: 1.0 vagy újabb Egy alkalmazásban a megvilágítást például a glenable( GL_LIGHTING ) paranccsal kapcsolhatjuk be, és a gldisable( GL_LIGHTING ) paranccsal tilthatjuk le, a megvilágítás állapotát pedig a glisenabled( GL_LIGHTING ) hívással kérdezhetjük le A glget használata Az alkalmazásoknak különféle okokból lehet szükségük arra, hogy lekérdezzék az Open- GL-állapotot. Ezt rendszerint induláskor teszik meg, hogy olyan megvalósításfüggõ értékekhez jussanak hozzá, mint a GL_MAX_ATTRIB_STACK_DEPTH vagy a GL_MAX_LIGHTS. Az OpenGL az alkalmazásnak minden olyan érték lekérdezését megengedi, amelyet az beálllíthat. Az aktuális színt amelyet a glcolor3f() állít be például a GL_CUR- RENT_COLOR érték lekérdezésével lehet megtudni. A különbözõ állapotértékek lekérdezésére az OpenGL általános módszert nyújt: void glgetbooleanv( GLenum pnév, GLboolean* param); void glgetdoubledev( GLenum pnév, GLdouble* param); void glgetfloatv( GLenum pnév, GLfloat* param); void glgetintegerv( GLenum pnév, GLint* param); Ezekkel az eljárásokkal az OpenGL-állapotértékeket típus szerint kérdezhetjük le. A pnév a lekérdezendõ állapotelemet jelöli, a param pedig egy GLboolean, GLdouble, GLfloat vagy GLint memóriahelyre mutat, amely az állapotértéket tárolja. OpenGL-változat: 1.0 vagy újabb

13 1. fejezet Bevezetés az OpenGL világába 13 Mindig az állapotelem típusának megfelelõ függvényt kell használnunk. A GL_MAX_LIGHTS például egész érték, ezért a kódban a glgetintegerv() függvényt kell meghívnunk: GLint maxlights; glgetintegerv( GL_MAX_LIGHTS, &maxlights ); A könyvben több állapotelemet is ismertetünk, amelyeket az alkalmazásunk lekérdezhet, teljes listát pedig az OpenGL Reference Manual glget címszavánál, illetve a The OpenGL Graphics System 6. fejezetében (State and State Requests) találhatunk. Megjegyzés A teljesítményre (sebességre) érzékeny kódrészekben törekedjünk arra, hogy az alkalmazás lehetõleg ritkán használjon lekérdezést A jellemzõverem Az állapotváltozások mentésére és tárolására az OpenGL verem-adatszerkezeteket biztosít. A jellemzõverem tetején az éppen érvényben levõ OpenGL-állapotot találjuk. Miután alkalmazásunk a verem tetejére helyezett (push) egy új állapotot, a verem legfelsõ elemének eltávolításával (pop) állíthatjuk vissza az OpenGL-t a push parancs elõtti állapotába. Az OpenGL-kiszolgálóállapothoz és az OpenGL-ügyfélállapothoz külön-külön verem tartozik. A két állapot közötti különbségekkel a 2. fejezet foglalkozik. void glpushattrib( GLbitfield maszk ); void glpopattrib( void ); void glpushclientattrib( GLbitfield maszk ); void glpopclientattrib( void ); Ezek a függvények az OpenGL állapotvermeibe írnak elemeket, illetve elemeket távolítanak el onnan. A maszk egy bitenkénti OR mûvelet azokon az OpenGL által meghatározott bitértékeken, amelyek a verembe írandó állapotcsoportokat jelölik. A kiszolgálóverem és az ügyfélverem különbözõ állapotértékeket ment és állít vissza. A glpushattrib() és a glpopattrib() a kiszolgálóvermet érintõ mûveletek, míg a glpushclientattrib() és a glpopclientattrib() az ügyfélveremre vonatkoznak. OpenGL-változat: glpushattrib()/glpopattrib(), 1.0 vagy újabb glpushclientattrib()/glpopclientattrib(), 1.1. vagy újabb 3 A takarási lekérdezések viszont növelhetik az alkalmazás sebességét. (További információért lásd az A függeléket.)

14 14 OpenGL röviden A maszk paraméter lehetõvé teszi az alkalmazásnak, hogy megadja, mely állapotérték-halmazokat mentsék és állítsák vissza az írási (push) és kiolvasási-eltávolítási (pop) parancsok. A glpushattrib( GL_LIGHTING_BIT ) hívás eredményeképpen például az ennek megfelelõ glpopattrib() csak azokat az állapotértékeket állítja vissza, amelyek az OpenGLmegvilágításra vonatkoznak, például az anyag- és fénytulajdonságok változásait. Ha minden verembe helyezhetõ kiszolgálóállapotot a verembe szeretnénk írni, a glpush- Attrib() függvényt a GL_ALL_ATTRIB_BITS maszkkal kell meghívnunk. Ehhez hasonlóan, a glpushclientattrib( GL_CLIENT_ALL_ATTRIB_BITS ) a verembe helyezhetõ összes ügyfélállapotot a verembe írja. Bár az OpenGL-szabvány azt mondja, hogy a glpushattrib() és a glpushclient- Attrib() úgy viselkedik, mintha az aktuális OpenGL-állapotot a verem tetejére másolná, a legtöbb mai OpenGL-termék ezt minimális adatmásolással valósítja meg. Ennek eredményeképpen az összes állapot verembe írása nem olyan költséges, mint ahogy várnánk. Bár minden állapotot verembe írni természetesen költségesebb, mint csak néhányat, a fejlesztõk gyakran úgy találják, hogy a GL_ALL_ATTRIB_BITS és a GL_CLIENT_ALL_ATTRIB_BITS elõnyei újrahasznosításkor felülmúlják azokat a hátrányokat, amelyek a sebességcsökkenésbõl következnek. Az összes lehetséges maszk értéket az OpenGL Reference Manual glpush- Attrib és glclientpushattrib címszavánál, illetve a The OpenGL Graphics System 6. fejezetében (State and State Requests) találhatjuk meg. A jellemzõverem mélysége a megvalósítástól függ, de legalább 16. A jellemzõverem legnagyobb mélységét az alkalmazások a glgetintegerv( GL_MAX_ATTRIB_STACK_DEPTH, ), illetve glgetintegerv( GL_MAX_CLIENT_ATTRIB_STACK_DEPTH, ) hívással kérdezhetik le A glgetstring használata Az OpenGL a megvalósításról karakterlánc formában ad felvilágosítást. Ezeket az értékeket a glgetstring() függvénnyel kérdezhetjük le: const GLubyte* glgetstring( GLenum név ); Ez a függvény karakterlánc alapú állapotértékeket ad vissza. A név a lekérdezendõ karakterlánc-állapotelem neve. OpenGL-változat: 1.0 vagy újabb A glgetstring() a név értékétõl függõen különbözõ értékeket ad vissza: GL_VENDOR Az adott OpenGL-megvalósítás készítõjét adja vissza. GL_VERSION Az adott OpenGL-változatot adja vissza.

15 1. fejezet Bevezetés az OpenGL világába 15 GL_EXTENSIONS Az adott OpenGL-megvalósításban elérhetõ bõvítményeket adja vissza. GL_RENDERER A gyártó leképezõjérõl ad információt. (A név értéke lehet GL_SHADING_LANGUAGE_VERSION is; további információért lásd az OpenGL Shading Language leírást.) Az alkalmazások induláskor jellemzõen a GL_VERSION és GL_EXTENSIONS értékeket kérdezik le, hogy meghatározzák a támogatott szolgáltatások halmazát. A GL_EXTENSIONS értékkel a 7. fejezetben részletesebben foglalkozunk majd. Megjegyzés Ahogy azt a fejezet korábbi, Állapotok és lekérdezések címû részében leírtuk, az Open- GL az állapotot egy leképezési környezetben tárolja. A kezdõkkel gyakran elõfordul, hogy az alkalmazás indításakor véletlenül meghívják a glgetstring() függvényt, hogy lekérdezzék az OpenGL-változatot és a támogatott bõvítményeket, miközben még nem áll rendelkezésükre leképezési környezet. Ilyen esetben a viselkedés nem meghatározható, és a glgetstring() általában NULL-t ad vissza. Ezt úgy akadályozhatjuk meg, hogy a glgetstring()-et csak a leképezési környezetet létrehozó és a GLUTban érvényre juttató glutcreatewindow() hívás után hívjuk meg. A glgetstring( GL_VERSION ) által visszaadott változat-karakterlánc fõszám.alszám vagy fõszám.alszám.kiadás formájú, és egy szóköz is követheti, majd további, a gyártóra vonatkozó információk. Az alkalmazások a változat-karakterláncot az alábbi kóddal dolgozhatják fel, hogy kinyerjék belõle a fõ (major) változatszámot, illetve az alváltozat számát (minor): std::string ver((const char*) glgetstring(gl_version)); assert(!ver.empty() ); std::istringstream verstream( ver ); int major, minor; char dummysep; verstream >> major >> dummysep >> minor; A változat-karakterlánc feldolgozását követõen a fõ- és alváltozatszámból az alkalmazások képesek meghatározni a használandó OpenGL-szolgáltatáskészletet. Ha a fõváltozat (major_version) 1, az alváltozat (minor_version) pedig 4, ez az OpenGL 1.4-et jelöli ilyen esetben például nem használhatjuk az alkalmazásban az OpenGL 1.5 alapfelületét az olyan szolgáltatásokhoz, mint a tárobjektumok vagy a takarási lekérdezések. A könyv írásakor az OpenGL lehetséges verziószámai a következõk voltak: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5 és 2.0.

16 16 OpenGL röviden Azonosítók lekérdezése Az OpenGL azonosítókat hoz létre az átmeneti tárakhoz, megjelenítési listákhoz és anyagmintázatokhoz. Az alkalmazások a glisbuffer(), glislist() és glistexture() függvényekkel kérdezhetik le, hogy egy azonosító érvényes átmeneti tár, megjelenítési lista vagy anyagmintázat-e. Ezekkel a függvényekkel késõbbi fejezetekben foglalkozunk Egyéb lekérdezõfüggvények Az OpenGL más lekérdezõfüggvényei a megvilágítással, illetve a mintázattérképezéssel kapcsolatos értékek lekérdezését teszik lehetõvé az alkalmazásoknak. A megvilágítási és mintázattérképezési állapotparaméterek beállításával a 4. és 6. fejezetben foglalkozunk, de a kötetben nem tárgyaljuk ezen értékek lekérdezését. Kíváncsiságunkat az OpenGL Reference Manual glgetlight, glgetmaterial, glgettexenv, glgettexgen, glgettex- Image és glgettexparameter címszavait fellapozva elégíthetjük ki Hibák Alkalmazásunk többféle módon is hibákat válthat ki az OpenGL-ben. Ha az alkalmazás olyan hibát vált ki, amelyet az OpenGL észlel, a hibát a glgeterror() függvénnyel kérdezhetjük le: GLenum glgeterror( void ); Ez a függvény az aktuális hibaállapotot adja vissza. A glgeterror() által visszaadott hibaértékeket az 1.2. táblázatban foglaltuk össze. Amennyiben az OpenGL nem rögzített hibát, a glgeterror() GL_NO_ERROR-t ad vissza. OpenGL-változat: 1.0 vagy újabb Amikor az OpenGL hibát észlel, egy hibakódot rögzít, és folytatja a parancsok feldolgozását. A rögzített hibakódot, amely GLenum típusú, az alkalmazás a glgeterror() meghívásával tudakolhatja meg. Az OpenGL-hibákat az 1.2. táblázat foglalja össze. Tegyük fel például, hogy alkalmazásunk az alábbi hívást adja ki: glenable( GL_MAX_LIGHTS ); Az OpenGL ekkor GL_INVALID_ENUM hibát jegyez fel, mert a GL_MAX_LIGHTS a glget- Integerv() esetében érvényes felsorolás, a glenable() esetében azonban nem. Az OpenGL addig tárolja a hibakódokat, amíg le nem kérdezzük azokat a glgeterror() függvénnyel, tehát ha az alkalmazásnak az említett függvény hibát jelez, a hibát a megfelelõ OpenGL-parancsok bármelyike okozhatta.

17 1. fejezet Bevezetés az OpenGL világába táblázat A glgeterror()* által visszaadott OpenGL-hibakódok GLenum-hibakód GL_INVALID_ENUM GL_INVALID_OPERATION GL_INVALID_VALUE GL_OUT_OF_MEMORY GL_STACK_OVERFLOW GL_STACK_UNDERFLOW Leírás Egy OpenGL-parancs érvénytelen felsorolást kapott. Az aktuális állapotnak nem megfelelõ vagy abban érvénytelen OpenGL-parancsot adtunk ki. A megengedett tartományon kívül esõ értéket adtunk át az OpenGL-nek. Az OpenGL nem tudott elegendõ memóriát lefoglalni egy parancs végrehajtásához. Egy parancs túlcsordulást idézett elõ egy OpenGL-veremben. Egy parancs alulcsordulást idézett elõ egy OpenGL-veremben. *. A felsorolt hibákon kívül az OpenGL GL_TABLE_TOO_LARGE hibát is visszaadhat. Errõl további információt a The OpenGL Graphics System-ben találhatunk. Amikor egy OpenGL-parancs hibát vált ki, az OpenGL viselkedése általában elég jól meghatározható: a hibát okozó hívás üres utasításként (no-op) viselkedik (vagyis a függvény nem lesz hatással az OpenGL állapotára vagy a képkockatárra), és ha értéket ad vissza, az érték nulla lesz. A GL_OUT_OF_MEMORY hiba kivétel; ebben az esetben az OpenGL nem meghatározható állapotba kerül. 4 Jellemzõ használat Az OpenGL-hibákat kezeljük az alkalmazásunk kijavítandó programhibáiként. Egy üzemi környezetbe helyezett végleges kódnak nem szabad OpenGL-hibákat kiváltania. Az alkalmazások általában az OpenGL-elõkészítõ kódok lefutása, illetve egy animáció minden képkockájának leképezése után hívják meg a glgeterror() függvényt. A programozók jellemzõen csak fejlesztés közben alkalmaznak glgeterror() hívásokat, a végleges üzemi kódban nem, hogy azok ne legyenek negatív hatással az alkalmazás sebességére. Ez egy assert() hívással érhetõ el: assert( glgeterror() == GL_NO_ERROR ); A fejlesztõk rendszerint CPP-makrókkal ellenõrzik az OpenGL-hibákat, illetve hajtanak végre ehhez kapcsolódó mûveleteket (például hibaüzenetet jelenítenek meg egy ablakban, vagy kivételt váltanak ki), a makrókat pedig no-opként határozzák meg az üzemi kódban. A könyvhöz tartozó példakód ezt a megközelítést az OGLDIF_CHECK_ERROR CPPmakróval mutatja be. Az említett makró bevezetését a D függelékben láthatjuk, ahol az OpenGL-hibákat kiváltó kódok hibáinak megkereséséhez tanácsokat is adunk. 4 Ha a glendlist() vált ki GL_OUT_OF_MEMORY hibát, az OpenGL állapota meghatározott marad; lásd a glendlist címszót az OpenGL Reference Manual-ben.

18 18 OpenGL röviden 1.2. GLUT A fejezet korábbi, Állapotok és lekérdezések címû részében említettük, hogy az állapotokat betokozó OepnGL leképezési környezetek létrehozásáért platformfüggõ ablakkönyvtárak felelnek, ami sajnos azzal jár, hogy platformfüggõ kódot kell írnunk. Az OpenGL Utility Toolkit (GLUT) azonban szerencsére platformfüggetlen könyvtár, amellyel az ablakokat, az adatbevitelt és a leképezési környezeteket kezelhetjük. Nem helyettesíti teljes egészében a platformfüggõ kódot, de példaprogramokhoz és bemutatókhoz, valamint egyes egyszerû alkalmazásokhoz elegendõ hasznos szolgáltatást nyújt. A GLUT-függvények neve a glut*() formát követi; a tárcsere GLUT-függvénye például a glutswapbuffers(). Jelenleg a GLUT 3.7-es változata a legfrissebb. A GLUT teszi lehetõvé, hogy kötetünkben az OpenGL-re összpontosíthassunk, ne pedig az ablakok és leképezési környezetek platformfüggõ létrehozására és kezelésére. Ezekkel a részletekkel a 8. fejezetben foglalkozunk majd, amikor már ismerõsebben csengenek az OpenGL fogalmai. A GLUT (illetve a GLX) alapmûve az OpenGL Programming for the X Window System (Kilgard 1996), de a GLUT-ról az OpenGL webhelyén is szerezhetünk további ismereteket, ha ellátogatunk a következõ címre: Fejezetünk késõbbi, Egy egyszerû példa címû részében részletesebben is megismerkedünk a GLUT néhány alapfüggvényének használatával GLU A GLU az OpenGL Utility Library rövidítése. Ez egy olyan, az ARB által jóváhagyott függvénykönyvtár, amely a legtöbb OpenGL-megvalósításban hozzáférhetõ. A könyvtár olyan, az OpenGL-ben közvetlenül nem elérhetõ, magasabb rendû mûveletekhez és szolgáltatásokhoz nyújt támogatást, mint a kamera helyzetének és tájolásának szabályozása, a magasabb rendû görbék és felszínek, a több sokszögbõl álló primitívek (például hengerek és gömbök), az ablak-koordinátarendszerre vagy onnan való vetítés, illetve a sokszög-mozaikolás. A GLU-függvények neve a glu*() formát követi; a nézettranszformáció GLU-függvénye például a glulookat(). Jelenleg a GLUT 1.3-as változata a legfrissebb.

19 1. fejezet Bevezetés az OpenGL világába 19 Az OpenGL röviden csak néhány gyakran használatos GLU-eljárást mutat be. Ha mindent tudni szeretnénk a GLU-ról, töltsük le a The OpenGL Graphics System Utility Library címû GLU-szabványt az OpenGL webhelyérõl, a index.html címrõl, de a GLU-hoz kitûnõ kézikönyv az OpenGL Reference Manual is A fejlesztõkörnyezet OpenGL-programok fejlesztéséhez rendelkeznünk kell egy fejlesztõkörnyezettel, amely tartalmazza a szükséges könyvtárakat és fejállományokat: az OpenGL fejállományt és könyvtárat, a GLU fejállományt és könyvtárat, a GLUT fejállományt és könyvtárat, vagy az adott platformnak és ablakrendszernek megfelelõ fejállományokat és könyvtárakat. Az, hogy ezek az összetevõk hogyan szerezhetõk be, a választott fejlesztõplatformtól függ. Kötetünkben három népszerû rendszert vizsgálunk: az Apple Mac OS X-et, a Linuxot és a Microsoft Windowst. A példaprogram forráskódjának lefordításához a fentiek mellett szükségünk lesz még a libtiff-re és a GNU Make-re. Arról, hogy a választott fejlesztõplatformunkhoz illõ összetevõket hogyan szerezhetjük be, a könyv webhelyén találhatunk információkat. Ha egy jó hírû számítógépgyártótól olyan új számítógépet vásárolunk, amelynek grafikus kártyája támogatja az OpenGL-t, nagy az esély rá, hogy a rendszert már beállították az OpenGL hardveres gyorsítást alkalmazó futtatására. A grafikus kártyák gyártói azonban gyakran frissítik az eszközmeghajtóikat, hogy újabb szolgáltatásokkal bõvítsék azokat, hibákat javítsanak ki bennük, vagy növeljék a sebességet. Ha frissíteni szeretnénk grafikus kártyánk eszközmeghajtóját (illesztõprogramját), töltsük le az új változatot a számítógép vagy a grafikus kártya gyártójának webhelyérõl, és kövessük a telepítési utasításokat Apple Mac OS X Az Apple Developer Connection kimerítõ mennyiségû OpenGL-információhoz nyújt hivatkozásokat, köztük olyan dokumentációkhoz, amelyekbõl megtudhatjuk, hogyan fejleszthetünk OpenGL-alkalmazásokat Mac OS X rendszeren, milyen eszközökkel végezhetünk bennük hibakeresést, és hogyan optimalizálhatjuk Mac OS X-es OpenGL-alkalmazásainkat.

20 20 OpenGL röviden A Macintosh OpenGL Programming Guide, amely az alábbi webhelyen érhetõ el, kitûnõ információforrás az Apple rendszeren fejlesztett OpenGL-alkalmazásokhoz: Az OpenGL fejállományokat és könyvtárakat Mac OS X rendszerünknek az OpenGL keretrendszerhez tartozó mappájában találhatjuk meg: /System/Library/Frameworks/OpenGL.framework Az AGL az Apple egyik platformfüggõ OpenGL-felülete, amellyel a 8. fejezetben foglalkozunk részletesebben. Ha olyan kódot szeretnénk építeni, amely az AGL-t használja, az AGL keretrendszer mappájában levõ fejállományokra és könyvtárakra lesz szükségünk: /System/Library/Frameworks/AGL.framework Példáink többsége a platformfüggetlen GLUT felületet használja, de az Apple rendszerek ezt a felületet is támogatják: /System/Library/Frameworks/GLUT.framework OpenGL-alkalmazásokat Macintoshon kétféleképpen fejleszthetünk: az Xcode IDE segítségével vagy egy a GNU fordítókat közvetlenül használó makefile rendszerrel. A könyvhöz tartozó példaprogram kódja ez utóbbi megoldást alkalmazza, és módosítás nélkül lefordíthatónak kell lennie egy parancshéjból. Ha az Xcode-ot szeretnénk használni, elõbb be kell azt állítanunk a megfelelõ keretrendszer használatára. Az Apple Mac OS X rendszer alábbi mappájában több OpenGL-mintaprogramot is találunk, amelyek az Xcode-ot használják: /Developer/Examples/OpenGL/GLUT Az itt található példákat útmutatóként használhatjuk, ha az Xcode-dal szeretnénk fejleszteni. A példakód letöltéséhez látogassunk el az OpenGL röviden webhelyére, ahol arról is friss információkat találhatunk, hogy a kód hogyan fordítható le Apple Mac OS X rendszeren Linux Az OpenGL röviden példakódját Red Hat Linux Enterprise WS rendszeren készítettük, de az OpenGL-fejlesztés más Linux- és Unix-rendszereken is hasonlóan történik. A teljes Linux-terjesztéseknek rendszerint része egy fejlesztõkörnyezet, amely tartalmazza az OpenGL-t, a GLU-t, a GLUT-ot vagy a freeglut-ot, valamint GLX-fejállományokat és -könyvtárakat. Ha Linux rendszerünkrõl ezek az összetevõk hiányoznak, célszerû besze-

21 1. fejezet Bevezetés az OpenGL világába 21 rezni a Mesát. A Mesa egy 3D API, amelynek felülete nagyon hasonló az OpenGL-éhez, és tartalmazza az OpenGL-t, a GLU-t, a GLUT-ot, valamint a GLX-fejállományokat és -könyvtárakat. Több Linux-terjesztés is a Mesát használja a hardveres gyorsítású OpenGLhez. Ha többet szeretnénk tudni róla, vagy le szeretnénk tölteni a Mesa forráskódját, látogassunk el a Mesa webhelyére az alábbi címen: Ha Linux rendszerünket egy jó hírû számítógépgyártótól vásároltuk, nagy az esély rá, hogy a rendszert teljes hardveres gyorsításra állították be. Ezt a glxinfo programmal ellenõrizhetjük. Ha Linux rendszerünket újonnan telepítjük, és grafikus kártyánknak nincs nyílt forrású eszközmeghajtója, el kell látogatnunk a grafikus kártya gyártójának webhelyére, hogy beszerezzük a linuxos meghajtót, másképpen az OpenGL-leképezés gyorsítás nélkül történik majd. Amennyiben OpenGL-fejállományaink a szokásos helyen (/usr/include/gl) találhatók, nem kell az I kapcsolóval meghatároznunk a helyüket; a fordítónak önmûködõen meg kell találnia azokat. Az OpenGL-programok összeszerkesztési kapcsolói jellemzõen a következõk: -L/usr/X11R6/lib lglut lglu -lgl Microsoft Windows A Microsoft Windowshoz tervezett OpenGL-fejlesztõkörnyezet a Windows 98 óta stabil. 5 Az alábbi információk tehát érvényesek a Windows 98, a Windows ME, a Windows 2000 és a Windows XP rendszerre is, valamint a Windows NT 3.5-ös és annál újabb változataira. A Microsoft Visual Studio.NET az OpenGL 1.1 fejállományait és exportbekötõ könyvtárfájljait tartalmazza. Amikor egy alkalmazás összeszerkesztünk (linking), az opengl32.lib állományt kell megadnunk bemeneti könyvtárként. A Microsoft az operációs rendszerhez mellékeli az opengl32.dll nevû futásidejû dinamikus csatolású könyvtárat (dll-t). Az 1.1-esnél újabb szolgáltatások és bõvítmények eléréséhez az 1.1-es fejállományon kívül szükségünk van a glext.h fejállományra is. Ennek legfrissebb változata az OpenGL Extension Registry webhelyrõl szerezhetõ be: A Microsoft fordítóprogramjainak része a GLU 1.2 fejállomány és exportbekötõ könyvtárfájl. Alkalmazásainkat a glu32.lib-bel kell összeszerkesztenünk; a GLU futásidejû dinamikus csatolású könyvtára része a Microsoft Windows operációs rendszernek. 5 A Microsoft bejelentette, hogy jövõbeli operációs rendszereiben már frissített, az újabb változatokhoz igazodó OpenGL-támogatást kíván nyújtani.

22 22 OpenGL röviden A GLUT-ot az OpenGL webhelyérõl, a címrõl tölthetjük le. Mivel itt számos letöltési lehetõséget találunk, gyõzõdjünk meg róla, hogy a Microsoft Windowshoz elõre lefordított binárisokat töltjük le, nem pedig más platformhoz készített forráskódokat vagy bináris állományokat. A GLUT-ot letöltése után saját kezûleg kell telepítenünk. Ehhez a következõ állományokkal kell rendelkeznünk: glut.h A GLUT fejállománya glut32.lib Az exportbekötõ könyvtárfájl glut32.dll A futásidejû dinamikus csatolású könyvtár Helyezzük a glut.h állományt fordítónk alapértelmezett include könyvtárának GL alkönyvtárába. Ennek elérési útja fordítóprogramonként különbözik, de a vége mindig \include\gl. A gl.h és glu.h állományoknak már ebben a könyvtárban kell lenniük. Helyezzük a glut32.lib állományt a fordító alapértelmezett lib könyvtárába, végül pedig tegyük a glut32.dll-t az operációs rendszer System32 mappájába (például C:\Windows\System32) vagy bármely olyan mappába, amely a DLL-ek keresési útvonalában szerepel Egy egyszerû példa Az 1.1 példában szereplõ OpenGL-kód, bár igen egyszerû, bevezetésnek tökéletesen megfelel. A program neve SimpleExample, vagyis EgyszerûPélda, és letölthetõ a könyv webhelyérõl. A program egy fehér háromszöget rajzol fekete háttérre, ahogy az 1.3. ábrán is láthatjuk példa A SimpleExample program #include <GL/glut.h> #include <GL/glu.h> #include <GL/gl.h> #include <string> #include <sstream> #include <assert.h> // Azonosító meghatározása a Quit menüponthoz static const int QUIT_VALUE( 99 ); // Globális változó a megjelenítési lista azonosítójának tárolásához GLuint listid; // // GLUT megjelenítési visszahívás. A GLUT akkor hívja meg, amikor // az ablakot újra kell rajzolni. static void display() {

23 1. fejezet Bevezetés az OpenGL világába 23 glclear( GL_COLOR_BUFFER_BIT ); // Modelltranszformáció; az alakzat hátrébb helyezése // a Z tengelyen 4 egységgel glloadidentity(); gltranslatef( 0.f, 0.f, -4.f ); // Az alakzat kirajzolása glcalllist( listid ); // Tárcsere (a leképezett kép megjelenítése) glutswapbuffers(); assert( glgeterror() == GL_NO_ERROR ); } // // GLUT átméretezési visszahívás. A hívásra akkor kerül sor, amikor // az ablak mérete megváltozik. static void reshape( int w, int h ) { // A nézetablak frissítése a teljes ablakra rajzoláshoz glviewport( 0, 0, w, h ); // A vetületmátrix / oldalarány frissítése glmatrixmode( GL_PROJECTION ); glloadidentity(); gluperspective( 50., (double)w/(double)h, 1., 10. ); // Modell nézet módba kapcsolás a megjelenítési eljáráshoz glmatrixmode( GL_MODELVIEW ); assert( glgeterror() == GL_NO_ERROR ); } // // GLUT menü-visszahívás. Akkor hívódik meg, ha a felhasználó kiválaszt // egy menüpontot. static void mainmenucb( int value ) { if (value == QUIT_VALUE) exit( 0 ); } static void init() { // A kiegyenlítés alapállapotban be van kapcsolva, de nincs rá // szükség, ezért kikapcsoljuk. gldisable( GL_DITHER ); // Annak a meghatározása, hogy elérhetõk-e csúcstömbök. // Más szóval: OpenGL v1.1-gyel van dolgunk? std::string ver((const char*) glgetstring( GL_VERSION )); assert(!ver.empty() ); std::istringstream verstream( ver ); int major, minor; char dummysep; verstream >> major >> dummysep >> minor; const bool usevertexarrays = ( (major >= 1) && (minor >= 1) ); const GLfloat data[] = {

24 24 OpenGL röviden -1.f, -1.f, 0.f, 1.f, -1.f, 0.f, 0.f, 1.f, 0.f }; if (usevertexarrays) { // Felkészülés a csúcstömbök használatára glenableclientstate( GL_VERTEX_ARRAY ); glvertexpointer( 3, GL_FLOAT, 0, data ); } // Új megjelenítési lista létrehozása listid = glgenlists( 1 ); glnewlist( listid, GL_COMPILE ); if (usevertexarrays) // Az OpenGL 1.1-ben vannak csúcstömbök, ezért ezeket használjuk gldrawarrays( GL_TRIANGLES, 0, 3 ); else { // Az OpenGL 1.0 Begin/End felületének használata glbegin( GL_TRIANGLES ); glvertex3fv( &data[0] ); glvertex3fv( &data[3] ); glvertex3fv( &data[6] ); glend(); } glendlist(); assert( glgeterror() == GL_NO_ERROR ); // A megjelenítési és átméretezési visszahívások bejegyzése a GLUT-ba glutdisplayfunc( display ); glutreshapefunc( reshape ); // Jobb egérgombos menü létrehozása, hogy a felhasználók kiléphessenek int mainmenu = glutcreatemenu( mainmenucb ); glutaddmenuentry( "Quit", QUIT_VALUE ); glutattachmenu( GLUT_RIGHT_BUTTON ); } int main( int argc, char** argv ) { glutinit( &argc, argv ); // Egyetlen, 300x300 képpontos, RGB módú, kétszeres tárazású GLUT-ablak // létrehozása. Az ablak neve legyen Simple Example glutinitdisplaymode( GLUT_RGB GLUT_DOUBLE ); glutinitwindowsize( 300, 300 ); glutcreatewindow( "Simple Example" ); init(); // Ciklus az eseményekhez glutmainloop(); return 0; }

25 1. fejezet Bevezetés az OpenGL világába ábra A SimpleExample program kimenete Az elsõ három fejállomány a <GL/glut.h>, a <GL/glu.h> és a <GL/gl.h> a GLUT, a GLU és az OpenGL számára tartalmaznak meghatározásokat. Ezeket néhány szabványos C/C++ fejállomány követi. A fenti kód a C elõfeldolgozó segítségével határoz meg egy értéket, amely a Quit (Kilépés) menüpontot azonosítja. Amikor a felhasználó kinyitja a menüt, és kiválasztja belõle a Quit elemet, a GLUT átadja ezt az azonosítót a menü visszahívó függvényének. A modern programozási stílus kerüli a globális változók használatát, bár azok továbbra is hasznosak, és az ehhez hasonló, kis méretû bemutatóprogramokban elfogadottak. Esetünkben a kód egy OpenGL megjelenítési listához határoz meg globális azonosítót. Az alkalmazás az init() függvényben ad neki kezdõértéket, és a display() visszahívásban hivatkozik rá. Az OpenGL megjelenítési listái sokféle OpenGL-parancsot tárolhatnak, ebben a listában azonban csak rajzolási parancsok találhatók. A megjelenítési listákról a 2. fejezetbõl tudhatunk meg többet. A GLUT szükség szerint hívja meg a display() visszahívó függvényt, amikor frissítenie kell az ablakot. A példában ez a függvény olyan OpenGL-hívásokat tartalmaz, amelyek törlik az ablak tartalmát, betöltenek egy transzformációs mátrixot, meghívják a háromszöget kirajzoló parancsokat tároló megjelenítési listát, illetve hibákat keresnek, de találunk benne egy GLUT-hívást a tárak cseréjéhez is.

Grafikus csővezeték és az OpenGL függvénykönyvtár

Grafikus csővezeték és az OpenGL függvénykönyvtár Grafikus csővezeték és az OpenGL függvénykönyvtár 1 / 32 A grafikus csővezeték 3D-s színtér objektumainak leírása primitívekkel: pontok, élek, poligonok. Primitívek szögpontjait vertexeknek nevezzük Adott

Részletesebben

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 21./0. 3D grafika programozása OpenGL támogatással A 3D API

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 21./0. 3D grafika programozása OpenGL támogatással A 3D API Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 21./0. 3D grafika programozása OpenGL támogatással A 3D API Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László

Részletesebben

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter (adat szerkezet) float x,y,z,w; float r,g,b,a; } vertex; glcolor3f(0, 0.5, 0); glvertex2i(11, 31); glvertex2i(37, 71); glcolor3f(0.5, 0,

Részletesebben

Számítógépes grafika

Számítógépes grafika Számítógépes grafika XX. rész A GPU programozása a GLSL nyelv Az OpenGL árnyaló nyelve a GLSL (OpenGL Shading Language), amely segítségével vertex- és pixel- (fragment) shaderek által programozhatjuk a

Részletesebben

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter Hogyanok? Tartalom Egy ilyen rendszer hogyan épül fel Szükséges matematika, fizika Alap algoritmusok 3D képek létrehozása a cél Modern rendszerek

Részletesebben

Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Tanács Attila. Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem Direct3D, DirectX o Csak Microsoft platformon OpenGL o Silicon Graphics: IRIS GL (zárt kód) o OpenGL (1992) o Nyílt

Részletesebben

A szerzõrõl... xi Bevezetés... xiii

A szerzõrõl... xi Bevezetés... xiii TARTALOMJEGYZÉK A szerzõrõl...................................................... xi Bevezetés...................................................... xiii I. rész A Visual Basic 2005 környezet 1. óra Irány

Részletesebben

Grafikus csővezeték 2 / 77

Grafikus csővezeték 2 / 77 Bevezetés 1 / 77 Grafikus csővezeték 2 / 77 Grafikus csővezeték Vertex feldolgozás A vertexek egyenként a képernyő térbe vannak transzformálva Primitív feldolgozás A vertexek primitívekbe vannak szervezve

Részletesebben

Algoritmusok raszteres grafikához

Algoritmusok raszteres grafikához Algoritmusok raszteres grafikához Egyenes rajzolása Kör rajzolása Ellipszis rajzolása Algoritmusok raszteres grafikához Feladat: Grafikai primitíveket (pl. vonalat, síkidomot) ábrázolni kép-mátrixszal,

Részletesebben

Érdekes informatika feladatok

Érdekes informatika feladatok Érdekes informatika feladatok XX. rész Az első OpenGL példaprogram Visual C++-ban Ha OpenGL programot szeretnénk létrehozni VisualC++-ban, három lehetőségünk van: Win32 alkalmazás, Win32 konzol alkalmazás

Részletesebben

A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05 Geodéziai Feldolgozó Program

A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05 Geodéziai Feldolgozó Program A GeoEasy telepítése GeoEasy V2.05 Geodéziai Feldolgozó Program (c)digikom Kft. 1997-2008 Tartalomjegyzék Hardver, szoftver igények GeoEasy telepítése A hardverkulcs Hálózatos hardverkulcs A GeoEasy indítása

Részletesebben

CareLink Personal telepítési útmutató. Első lépések a CareLink Personal adatfeltöltéshez

CareLink Personal telepítési útmutató. Első lépések a CareLink Personal adatfeltöltéshez CareLink Personal telepítési útmutató Első lépések a CareLink Personal adatfeltöltéshez A CareLink USB illesztőprogram telepítése A CareLink USB illesztőprogramot telepíteni kell. Ez az illesztőprogram

Részletesebben

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja. Testmodellezés Testmodellezés (Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja. A tervezés (modellezés) során megadjuk a objektum geometria

Részletesebben

Láthatósági kérdések

Láthatósági kérdések Láthatósági kérdések Láthatósági algoritmusok Adott térbeli objektum és adott nézőpont esetén el kell döntenünk, hogy mi látható az adott alakzatból a nézőpontból, vagy irányából nézve. Az algoritmusok

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

Részletesebben

Mintavételes szabályozás mikrovezérlő segítségével

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

Operációs rendszerek. Tanmenet

Operációs rendszerek. Tanmenet Tanmenet TANMENET- Operációs rendszerek Témakörök Javasolt óraszám 1. Operációs rendszerek alapjai 2. Windows 2000 ismeretek- Munka a képernyőn 3. Windows 2000 ismeretek- A Start menü elemei 4. Windows

Részletesebben

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző

Részletesebben

Iman 3.0 szoftverdokumentáció

Iman 3.0 szoftverdokumentáció Melléklet: Az iman3 program előzetes leírása. Iman 3.0 szoftverdokumentáció Tartalomjegyzék 1. Az Iman rendszer...2 1.1. Modulok...2 1.2. Modulok részletes leírása...2 1.2.1. Iman.exe...2 1.2.2. Interpreter.dll...3

Részletesebben

Grafikus csővezeték 1 / 44

Grafikus csővezeték 1 / 44 Grafikus csővezeték 1 / 44 Grafikus csővezeték Vertex feldolgozás A vertexek egyenként a képernyő térbe vannak transzformálva Primitív feldolgozás A vertexek primitívekbe vannak szervezve Raszterizálás

Részletesebben

BaBér bérügyviteli rendszer telepítési segédlete 2011. év

BaBér bérügyviteli rendszer telepítési segédlete 2011. év BaBér bérügyviteli rendszer telepítési segédlete 2011. év Ajánlott konfiguráció A program hardverigénye: Konfiguráció: 2800 MHz processzor 512 Mbyte memória (RAM) / Szerver gépen 1G memória (RAM) Lézernyomtató

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

KISOKOS Windows TARTALOM. Vista rendszerhez

KISOKOS Windows TARTALOM. Vista rendszerhez KISOKOS Windows Vista rendszerhez TARTALOM 1. fejezet: RENDSZERKöVETELMéNYEK...1 2. fejezet: NYOMTATóSZOFTVER TELEPíTéSE WINDOWS HASZNáLATA ESETéN...2 Szoftver telepítése helyi nyomtatáshoz... 2 Szoftver

Részletesebben

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer Objektumok és osztályok Az objektumorientált programozás alapjai Rajzolás tollal, festés ecsettel A koordinátarendszer A vektorgrafikában az egyes grafikus elemeket (pontokat, szakaszokat, köröket, stb.)

Részletesebben

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010. Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010. május 1. BEVEZETÉS Az útmutató célja az Országos Területrendezési

Részletesebben

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter Raszterizáció OpenGL Mely pixelek vannak a primitíven belül fragment generálása minden ilyen pixelre Attribútumok (pl., szín) hozzárendelése

Részletesebben

CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén

CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén A CIB Internet Bankba való webes felületen keresztül történő belépés az Oracle által

Részletesebben

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem OpenCV Nyílt forráskódú szoftver (BSD licensz) Számítógépes látás,

Részletesebben

A Novitax ügyviteli programrendszer első telepítése

A Novitax ügyviteli programrendszer első telepítése Telepítő fájl letöltése honlapunkról A Novitax ügyviteli programrendszer első telepítése A honlapunkon (www.novitax.hu) található telepítő fájlt (novitax2007-setup.exe) le kell tölteni a számítógép egy

Részletesebben

Távolléti díj kezelése a Novitax programban

Távolléti díj kezelése a Novitax programban Mire jó a FirebirdSettings.exe Ezzel a programmal a Firebird adatbázis-kezelővel és az adatbázisokkal kapcsolatos beállításokat lehet elvégezni. Mit kell tenni a használata előtt A FirebirdSettings.exe

Részletesebben

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás? Bevezetés Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések Forráskód Hibajegyzék p2p.wrox.com xiii xiii xiv xiv xvi xvii xviii

Részletesebben

Java-s Nyomtatványkitöltő Program Súgó

Java-s Nyomtatványkitöltő Program Súgó Java-s Nyomtatványkitöltő Program Súgó Hálózatos telepítés Windows és Linux operációs rendszereken A program nem használja a Registry-t. A program három könyvtárstruktúrát használ, melyek a következők:

Részletesebben

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött) Grafikus primitívek kitöltése Téglalap kitöltése Poligon kitöltése Kör, ellipszis kitöltése Kitöltés mintával Grafikus primitívek kitöltése Területi primitívek: Zárt görbék által határolt területek (pl.

Részletesebben

Samsung Universal Print Driver Felhasználói útmutató

Samsung Universal Print Driver Felhasználói útmutató Samsung Universal Print Driver Felhasználói útmutató képzelje el a lehetőségeket Szerzői jog 2009 Samsung Electronics Co., Ltd. Minden jog fenntartva. Ez a felügyeleti útmutató csak tájékoztató célt szolgál.

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

Navigációs GPS adatok kezelése QGIS programmal (1.4 verzió) Összeállította dr. Siki Zoltán

Navigációs GPS adatok kezelése QGIS programmal (1.4 verzió) Összeállította dr. Siki Zoltán Navigációs GPS adatok kezelése QGIS programmal (1.4 verzió) Összeállította dr. Siki Zoltán A QGIS program GPS eszközök modulja segítségével kétirányú kommunikációt folytathatunk a navigációs GPS vevőnkkel.

Részletesebben

1. Alapok. #!/bin/bash

1. Alapok. #!/bin/bash 1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk

Részletesebben

A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05+ Geodéziai Feldolgozó Program

A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05+ Geodéziai Feldolgozó Program A GeoEasy telepítése GeoEasy V2.05+ Geodéziai Feldolgozó Program (c)digikom Kft. 1997-2010 Tartalomjegyzék Hardver, szoftver igények GeoEasy telepítése A hardverkulcs Hálózatos hardverkulcs A GeoEasy indítása

Részletesebben

A Microsoft terminálszolgáltatás ügyfél oldali hardverigényének meghatározása

A Microsoft terminálszolgáltatás ügyfél oldali hardverigényének meghatározása S SDA Stúdió kft. A Microsoft terminálszolgáltatás ügyfél oldali hardverigényének meghatározása Kiadva: 2002.02.12. Oldalak száma: 7 A dokumentum története Verzió Dátum Módosítás rövid leírása Módosító

Részletesebben

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Készítette: Gipsz Jakab Neptun-azonosító: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Kurzuskód: IP-08PAED Gyakorlatvezető

Részletesebben

Külső kártyaeszközök Felhasználói útmutató

Külső kártyaeszközök Felhasználói útmutató Külső kártyaeszközök Felhasználói útmutató Copyright 2008 Hewlett-Packard Development Company, L.P. A Java a Sun Microsystems, Inc. Egyesült Államokban bejegyzett védjegye. Az SD embléma az embléma tulajdonosának

Részletesebben

Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0

Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0 Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0 Az Ön letölthető fájl tartalmazza az Evolut Főkönyv 2013. program telepítőjét. A jelen leírás olyan telepítésre vonatkozik, amikor Ön

Részletesebben

Microsoft SQL Server telepítése

Microsoft SQL Server telepítése Microsoft SQL Server telepítése Az SQL Server a Microsoft adatbázis kiszolgáló megoldása Windows operációs rendszerekre. Az SQL Server 1.0 verziója 1989-ben jelent meg, amelyet tizenegy további verzió

Részletesebben

Az informatika kulcsfogalmai

Az informatika kulcsfogalmai Az informatika kulcsfogalmai Kulcsfogalmak Melyek azok a fogalmak, amelyek nagyon sok más fogalommal kapcsolatba hozhatók? Melyek azok a fogalmak, amelyek más-más környezetben újra és újra megjelennek?

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

iseries Client Access Express - Mielőtt elkezdi

iseries Client Access Express - Mielőtt elkezdi iseries Client Access Express - Mielőtt elkezdi iseries Client Access Express - Mielőtt elkezdi ii iseries: Client Access Express - Mielőtt elkezdi Tartalom Rész 1. Client Access Express - Mielőtt elkezdi.................

Részletesebben

Tudnivalók az NYMESEK vezeték nélküli hálózatáról. Beállítási útmutató WIFI felhasználóink számára

Tudnivalók az NYMESEK vezeték nélküli hálózatáról. Beállítási útmutató WIFI felhasználóink számára Nyugat-magyarországi Egyetem Savaria Egyetemi Központ Tanulmányi, Szolgáltató és Informatikai Központ 9700 Szombathely, Károlyi Gáspár tér 4. Tel.: 94/504-645 e-mail: krisztina@sek.nyme.hu Tudnivalók az

Részletesebben

Di1611/Di2011. KEZELÉSI ÚTMUTATÓ: Twain

Di1611/Di2011. KEZELÉSI ÚTMUTATÓ: Twain Di1611/Di2011 KEZELÉSI ÚTMUTATÓ: Twain Driver Tartalomjegyzék Tartalomjegyzék 1 A PC szkennelés beállítása 2 Csatlakozás az USB portra 3 A TWAIN meghajtó telepítése 3.1 A TWAIN meghajtó telepítése Plug

Részletesebben

QGIS tanfolyam (ver.2.0)

QGIS tanfolyam (ver.2.0) QGIS tanfolyam (ver.2.0) I. Rétegkezelés, stílusbeállítás 2014. január-február Összeállította: Bércesné Mocskonyi Zsófia Duna-Ipoly Nemzeti Park Igazgatóság A QGIS a legnépszerűbb nyílt forráskódú asztali

Részletesebben

A szoftverek típusai, változatai

A szoftverek típusai, változatai A szoftverek típusai, változatai A fejezetben az alábbi kérdéskörökkel foglalkozunk: Hogyan alkot a hardver és a szoftver egységes, működő rendszert? Hogyan kapcsolódik ez a két összetevő egymáshoz? Melyek

Részletesebben

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3 Darvay Zsolt Típusok és nevek a forráskódban Állandók és változók Hatókörök és az előfeldolgozó Bevitel és kivitel Kifejezések Utasítások Mutatók Függvények Struktúrák és típusok Állománykezelés C programozás

Részletesebben

Mobil Partner telepítési és használati útmutató

Mobil Partner telepítési és használati útmutató Mobil Partner telepítési és használati útmutató Tartalom Kezdeti lépések... 2 Telepítés... 2 A program indítása... 6 Mobile Partner funkciói... 7 Művelet menü... 7 Kapcsolat... 7 Statisztika... 8 SMS funkciók...

Részletesebben

Az ESET NOD32 program 2.7 verzió bemutatása a FU rootkit felismerése közben. Sicontact Kft. 2007.

Az ESET NOD32 program 2.7 verzió bemutatása a FU rootkit felismerése közben. Sicontact Kft. 2007. Az ESET NOD32 program 2.7 verzió bemutatása a FU rootkit felismerése közben Sicontact Kft. 2007. Előadás vázlat Telepítjük a NOD32 2.7-es változatát Normál körülmények között a valósidejű védelem már a

Részletesebben

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix 2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

SystemDiagnostics. Magyar

SystemDiagnostics. Magyar SystemDiagnostics Magyar Szeretne hozzánk fordulni... műszaki jellegű kérdéseivel vagy problémájával? Az alábbiakkal veheti fel a kapcsolatot: Forróvonalunk/ügyfélszolgálatunk (lásd a mellékelt forróvonal-listát,

Részletesebben

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: Név: vp.05@hotmail.com Kurzuskód:

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: Név: vp.05@hotmail.com Kurzuskód: Szerző Név: Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: vp.05@hotmail.com Kurzuskód: IP-08PAEG/27 Gyakorlatvezető neve: Kőhegyi János Feladatsorszám: 20 1 Tartalom Szerző... 1 Felhasználói dokumentáció...

Részletesebben

Általános nyomtató meghajtó útmutató

Általános nyomtató meghajtó útmutató Általános nyomtató meghajtó útmutató Brother Universal Printer Driver (BR-Script3) Brother Mono Universal Printer Driver (PCL) Brother Universal Printer Driver (Inkjet) B verzió HUN 1 Áttekintés 1 A Brother

Részletesebben

Amortizációs költségelemzés

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

RapidMiner telepítés i. RapidMiner telepítés

RapidMiner telepítés i. RapidMiner telepítés i RapidMiner telepítés ii COLLABORATORS TITLE : RapidMiner telepítés ACTION NAME DATE SIGNATURE WRITTEN BY Jeszenszky, Péter 2014. szeptember 17. REVISION HISTORY NUMBER DATE DESCRIPTION NAME iii Tartalomjegyzék

Részletesebben

Használati utasítás.

Használati utasítás. Lotus Notes Naptár Windows telefonra Használati utasítás. Írta: Varga Róbert 1 http://www.robertwpapps.uw.hu Bevezetés: Ezt az alkalmazást a fejlesztő saját használatra írta a teljesség igénye nélkül.

Részletesebben

Operációs rendszerek. Az X Window rendszer

Operációs rendszerek. Az X Window rendszer Operációs rendszerek X Windows rendszer Az X Window rendszer Grafikus felhasználói felületet biztosító alkalmazás és a kapcsolódó protokoll 1983-84: a Massachusetts Institute of Technology-n (MIT, USA).

Részletesebben

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

Tanúsítvány feltöltése Micardo kártyára

Tanúsítvány feltöltése Micardo kártyára Windows operációs rendszeren Tanúsítvány feltöltése Micardo kártyára A termék értékesítésének befejezése miatt a dokumentáció nem kerül frissítésre a továbbiakban. A termék nem támogatja az SHA-256 kriptográfiai

Részletesebben

Cikktípusok készítése a Xarayában

Cikktípusok készítése a Xarayában Cikktípusok készítése a Xarayában A Xaraya legfontosabb tulajdonsága az egyedi cikktípusok egyszerű készítésének lehetősége. Ezzel kiküszöbölhető egyedi modulok készítése, hiszen néhány kattintással tetszőleges

Részletesebben

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1 SZE INFORMATIKAI KÉPZÉS 1 ADATBÁZIS-KEZELÉS MS ACCESS 2010 A feladat megoldása során a Microsoft Office Access 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: Adatok importálása

Részletesebben

Hardver és szoftver követelmények

Hardver és szoftver követelmények Java-s Nyomtatványkitöltő Program Súgó Telepítési útmutató Hardver és szoftver követelmények A java-s nyomtatványkitöltő program az alábbi hardverigényt támasztja a számítógéppel szemben: 400 MHz órajelű

Részletesebben

Felhasználói kézikönyv - Android kliens

Felhasználói kézikönyv - Android kliens Felhasználói kézikönyv - Android kliens Tartalom Telepítés Indítás Fő képernyők Térkép Rétegválasztó ablak Kilépés Keresés Lista Részletek Telepítés Az Élő Berek Android alkalmazás letölthető a www.e-berek.hu

Részletesebben

Operációs rendszerek. Tanmenet

Operációs rendszerek. Tanmenet Tanmenet TANMENET- Operációs rendszerek Témakörök Javasolt óraszám 1. Windows XP ismeretek- Munka a képernyőn 2. Windows XP ismeretek- A Start menü elemei 3. Windows XP ismeretek- A billentyűzet 4. Windows

Részletesebben

A CA-42 adatkommunikációs kábel gyors telepítési útmutatója

A CA-42 adatkommunikációs kábel gyors telepítési útmutatója A CA-42 adatkommunikációs kábel gyors telepítési útmutatója 9234594 2. kiadás A Nokia, a Nokia Connecting People és a Pop-Port a Nokia Corporation bejegyzett védjegyei. Copyright 2005 Nokia. Minden jog

Részletesebben

VARIO Face 2.0 Felhasználói kézikönyv

VARIO Face 2.0 Felhasználói kézikönyv VARIO Face 2.0 Felhasználói kézikönyv A kézikönyv használata Mielőtt elindítaná és használná a szoftvert kérjük olvassa el figyelmesen a felhasználói kézikönyvet! A dokumentum nem sokszorosítható illetve

Részletesebben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

SZÁMÍTÁSOK A TÁBLÁZATBAN

SZÁMÍTÁSOK A TÁBLÁZATBAN SZÁMÍTÁSOK A TÁBLÁZATBAN Az Excelben az egyszerű adatok bevitelén kívül számításokat is végezhetünk. Ezeket a cellákba beírt képletek segítségével oldjuk meg. A képlet: olyan egyenlet, amely a munkalapon

Részletesebben

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43 a TávTagTár programhoz Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43 Tartalomjegyzék Futási feltételek... 3 Telepítés... 3 Indítás... 3 Főablak... 4 Új személy felvétele...

Részletesebben

Acer kivetítők 3D technológiával. Gyorsútmutató

Acer kivetítők 3D technológiával. Gyorsútmutató Acer kivetítők 3D technológiával Gyorsútmutató 2014. Minden jog fenntartva. Használati útmutató az Acer kivetítősorozatához Eredeti kiadás: 10/2014 Típusszám: Sorozatszám: Vásárlás időpontja: Vásárlás

Részletesebben

Delphi programozás I.

Delphi programozás I. Delphi programozás I. Konzol alkalmazások készítése Delphiben A Delphi konzol alkalmazása (console application) olyan 32 bites program, amely nem grafikus felületen, hanem egy szöveges konzol ablakban

Részletesebben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. április 4. Számok rendezése Feladat: Fejlesszük tovább úgy a buborék rendez algoritmust bemutató példát, hogy a felhasználó adhassa meg a

Részletesebben

Android alapok. Android játékfejlesztés

Android alapok. Android játékfejlesztés Az Android Studio fejlesztőkörnyezet letöltése, telepítése képernyőképekkel bemutatva, illetve az első programunk létrehozása. (Hello World) Android alapok Android játékfejlesztés Készítette: Soós András

Részletesebben

Acer kivetítők 3D technológiával. Gyorsútmutató

Acer kivetítők 3D technológiával. Gyorsútmutató Acer kivetítők 3D technológiával Gyorsútmutató 2012. Minden jog fenntartva. Használati útmutató az Acer kivetítősorozatához Eredeti kiadás: 8/2012 Típusszám: Sorozatszám: Vásárlás időpontja: Vásárlás helye:

Részletesebben

telepítési útmutató K&H Bank Zrt.

telepítési útmutató K&H Bank Zrt. K&H Bank Zrt. 1095 Budapest, Lechner Ödön fasor 9. telefon: (06 1) 328 9000 fax: (06 1) 328 9696 Budapest 1851 www.kh.hu bank@kh.hu telepítési útmutató K&H e-bank Budapest, 2015. március 09. K&H e-bank

Részletesebben

Máté: Számítógépes grafika alapjai

Máté: Számítógépes grafika alapjai Történeti áttekintés Interaktív grafikai rendszerek A számítógépes grafika osztályozása Valós és képzeletbeli objektumok (pl. tárgyak képei, függvények) szintézise számítógépes modelljeikből (pl. pontok,

Részletesebben

ETR Kliens installálás

ETR Kliens installálás ETR Kliens installálás Azonosító: ETR-Kliens Készítette: DEXTER Kft. Kiadva: 2001. május 1. DEXTER Copyright jegyzék Copyright jegyzék A Microsoft, a Windows, a Windows NT, a Windows NT Workstation a Microsoft

Részletesebben

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozás alapjai gyakorlat. 2. gyakorlat C alapok Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel

Részletesebben

Felhasználói Kézikönyv. Rii K18. Multimédiás Billentyűzet és Touchpad , Fax: Mobil: ,

Felhasználói Kézikönyv. Rii K18. Multimédiás Billentyűzet és Touchpad , Fax: Mobil: , Felhasználói Kézikönyv Rii K18 Multimédiás Billentyűzet és Touchpad 1141 Budapest, Fogarasi út 77. 1095 Budapest, Mester u. 34. Tel.: *220-7940, 220-7814, 220-7959, Tel.: *218-5542, 215-9771, 215-7550,

Részletesebben

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport 10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)

Részletesebben

PolyVision illesztőprogram Kibocsátási megjegyzések 2.2. változat

PolyVision illesztőprogram Kibocsátási megjegyzések 2.2. változat PolyVision illesztőprogram Kibocsátási megjegyzések 2.2. változat C. átdolgozás 2011. február 3. Áttekintés Ez a dokumentum a PolyVision illesztőprogram 2.2. változatára vonatkozó kibocsátási megjegyzéseket

Részletesebben

A Paint program használata

A Paint program használata A Paint program használata A Windows rendszerbe épített Paint program segítségével képeket rajzolhat, színezhet és szerkeszthet. A Paint használható digitális rajztáblaként. Egyszerű képek és kreatív projektek

Részletesebben

Információs technológiák 2. Gy: CSS, JS alapok

Információs technológiák 2. Gy: CSS, JS alapok Információs technológiák 2. Gy: CSS, JS alapok 1/69 B ITv: MAN 2017.10.01 Ismétlés Van egy Web nevű mappánk, ebben vannak az eddig elkészített weboldalak (htm, html) képek (jpg, png). Logikai felépítés

Részletesebben

Információtartalom vázlata

Információtartalom vázlata 11. Az Ön feladata munkahelyén egy újonnan vásárolt munkaállomás operációs rendszerének feltelepítése. Ismertesse milyen szempontok alapján választja ki az új rendszerszoftvert! Milyen információkat kell

Részletesebben

Szövegek C++ -ban, a string osztály

Szövegek C++ -ban, a string osztály Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string

Részletesebben

ÁNYK53. Az Általános nyomtatványkitöltő (ÁNYK), a személyi jövedelemadó (SZJA) bevallás és kitöltési útmutató együttes telepítése

ÁNYK53. Az Általános nyomtatványkitöltő (ÁNYK), a személyi jövedelemadó (SZJA) bevallás és kitöltési útmutató együttes telepítése ÁNYK53 Az Általános nyomtatványkitöltő (ÁNYK), a személyi jövedelemadó (SZJA) bevallás és kitöltési útmutató együttes telepítése Az ÁNYK53 egy keretprogram, ami a személyi jövedelemadó bevallás (SZJA,

Részletesebben

Programozás I. gyakorlat

Programozás I. gyakorlat Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt

Részletesebben

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu

Részletesebben

Plakátok, részecskerendszerek. Szécsi László

Plakátok, részecskerendszerek. Szécsi László Plakátok, részecskerendszerek Szécsi László Képalapú festés Montázs: képet képekből 2D grafika jellemző eszköze modell: kép [sprite] 3D 2D képével helyettesítsük a komplex geometriát Image-based rendering

Részletesebben

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla 1. Az adatbázistábla létrehozása a, Ha még nem hoztunk létre egy adatbázistáblát sem, akkor a jobb egérrel a DDIC-objekt. könyvtárra kattintva, majd a Létrehozás és az Adatbázistábla menüpontokat választva

Részletesebben

VBA makrók aláírása Office 2007 esetén

VBA makrók aláírása Office 2007 esetén VBA makrók aláírása Office 2007 esetén Windows tanúsítványtárban és/vagy kriptográfia eszközökön található tanúsítványok esetén Office 2007 alkalmazással 1(10) 1. Tartalomjegyzék 1. Tartalomjegyzék...

Részletesebben

Útmutató az Elektronikus fizetési meghagyás használatához

Útmutató az Elektronikus fizetési meghagyás használatához Útmutató az Elektronikus fizetési meghagyás használatához Fizetési meghagyás online igénylése 1(13) 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Bevezető... 3 3. A MOKK E-Fizetési meghagyás kezelésének

Részletesebben