1 Pixelek, Bittérképek, Fontok, Képek. 2 Miről lesz szó? ► Bittérképek pozicionálása, rajzolása ► Pixeladatok kiolvasása, beírása a színbufferbe ► Pixeladatok.

Slides:



Advertisements
Hasonló előadás
FOL függvényjelekkel Zsebibaba anyja A 2 harmadik hatványa a oszlopában az első blokk Ezek is nevek, de nem in- konstansok Azért, mert összetettek Predikátum:
Advertisements

A tartalommarketingről röviden Tartalom generálás és megosztás Először látogatók, olvasók, majd belőlük vásárlók lesznek. Bárhol, bármikor és bármilyen.
A digitális kép bevezetés. A digitális kép tulajdonságai 1. Egyszerű Windows Intéző nézet És még: IrfanView (társított alkalmazás), KB („nagy”
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
avagy a háromszög technika
Alaplap.
EGÉSZSÉGES TÁPLÁLKOZÁS
Fájlkezelés.
Operációs rendszerek.
Térkép készítése adataiból
Adatbázis normalizálás
Frekvencia függvényében változó jellemzők mérése
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Becslés gyakorlat november 3.
A színkezelés alapjai a GIMP programban
Komplex természettudomány 9.évfolyam
Elemi adattípusok.
1.sz. ábra: forrás: A tudomány kapujában minta minta minta minta minta minta minta minta minta minta minta.
Microsoft Excel BAHAMAS tanfolyam
Montázs készítése.
Adatbázisok gyakorlat
A Menedék Alapítvány ÉRTÉKEI
A mesterséges intelligencia alapjai
RÁDIÓRENDSZEREK Képi jelek Győr.
Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök
KRE-AKTÍV motivációs projekt
Kovács Gergely Péter Egyszerű lekérdezések
Rendszerező összefoglalás
Kockázat és megbízhatóság
Környezeti teljesítményértékelés
Nyelvek típusossága.
Adatbázis-kezelés (PL/SQL)
FÜGGVÉNYEK Legyen adott A és B két nem üres (szám)halmaz. Az A halmaz minden eleméhez rendeljük hozzá a B halmaz pontosan egy elemét. Ezt az egyértelmű.
KATRIN 2D DWG SZIMBÓLUMOK ÉS GDL KÖNYVTÁR
Elektrosztatikus festés (szinterezés)
Ez a címdia 1. szövegdoboza
Az élesség beállítása vagy fókuszálás
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
VB ADATTÍPUSOK.
A számítógép operációs rendszere
1.sz. ábra: forrás: A tudomány kapujában minta minta minta minta minta minta minta minta minta minta minta.
Adatszerkezetek.
Számítógépek felépítése 6. előadás virtuális tárkezelés
Business Mathematics
Számítógépes Hálózatok
OpenGL kiterjesztések (extensions)
Teljes visszalépéses elemzés
3. A robot képernyőmenüje
Tilk Bence Konzulens: Dr. Horváth Gábor
Szövegkezelés, hibakezelés
Informatikai gyakorlatok 11. évfolyam
Oracle Adatbázisok kezelése c#-ban
A Microsoft SharePoint testreszabása Online webhely
Összeállította: J. Balázs Katalin
Klasszikus genetika.
A számítógép története
A szállítási probléma.
A számítógép operációs rendszere
Matematika II. 5. előadás Geodézia szakmérnöki szak 2015/2016. tanév
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Edényrendezés - RADIX „vissza” - bináris számokra
Bevezetés Tematika Számonkérés Irodalom
Algoritmusok.
Kód tördelése és a megjelenés
OpenBoard Kezelő Tananyag közzététele a KRÉTA rendszerben.
FÜGGVÉNYEK ÉS GRAFIKONJUK
VÁLTOZÓ EURÓPA (Nemzet)Biztonsági szemmel
Pipeline példák (Normál, 2019).
KONFERENCIA Adminisztráció Óvári Márta
Előadás másolata:

1 Pixelek, Bittérképek, Fontok, Képek

2 Miről lesz szó? ► Bittérképek pozicionálása, rajzolása ► Pixeladatok kiolvasása, beírása a színbufferbe ► Pixeladatok másolása, bufferek között vagy bufferen belül egy másik pozícióba ► Képek nagyítása, kicsinyítése ► Pixel adatok formázása, transzformációk

3 Bitmap, Image ► Bitmap, Image: pixelek négyzet alakú tartománya  Bitmap: 0, és 1 értékeket tartalmaz. Megjelenési színe az aktuális színbeállítástól függ.  Image: RGBA komponenseket tartalmaz  Image kirajzolásra során blending is alkalmazható  Bitmap kirajzolásra során logikai műveletek lehetnek (per-fragment operációk)

4 Bitmap, Image glRasterPos{234}{sifd}{v}(TYPE x, TYPE y, TYPE z, TYPE w); Aktuális raszterpozíció beállítása az X, Y, Z, W pozícióba. A raszter pozíció a vertexekkel azonos koordináta transzformációkon megy át. Ha a transzformált raszterpozíció a viewporton kívül esik, akkor a raszterpozíció invalid. glGetFloatv(GL_CURRENT_RASTER_POSITION, vect); segítségével lekérdezhető az aktuális raszterpozíció. A második paraméter 4 elemű tömbre mutató pointer. glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID); lekérdezhető, hogy az aktuális raszterpozíció a viewporton belül van e.

5 Bitmap GLubyte bitmap[24] = { 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xff, 0xc0, 0xff, 0xc0 };

6 Kirajzolás glBitmap(GLsizei width, GLsizei height, GLFloat xo, GLFloat yo, GLFloat ox, GLFloat oy, const GLubyte *bitmap); widht, height: szélesség és magasság pixelben megadva xo, yo: az bitmap origo x,y koordinátái. Ha nem nulla, akkor pozitív értékek az origót fel illetve jobbra mozgatják, a negatív értékek pedig le illetve balra. ox, oy: a raszterpozíció eltolása a kirajzolás után

7 Feladat F-kirajzolása ► drawf.cpp  feladatok: ► Teszteljük a valid és invalid raszterpozíciót: unsigned char a; glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID,&a); if (a== GL_TRUE) printf("valid\n"); else printf("invalid\n"); ► Változtassuk a bitmap origóját. ► Változtassuk az bitmap raszterpozíció eltolásértéket.

8 GLut font lehetőségek ► Kétféle fonttípust támogat: stroke font és bitmap font ► Stroke font: vonalakból áll, transzformációk után nem torzul ► Bitmap font: lásd előző oldalak Példa: glutfont.cpp void glutBitmapCharacter(void *font, int character); font: pl. GLUT_BITMAP_8_BY_13, GLUT_BITMAP_9_BY_15, GLUT_BITMAP_TIMES_ROMAN_10, GLUT_BITMAP_HELVETICA_10 void glutStrokeCharacter(void *font, int character); font: pl. GLUT_STROKE_ROMAN, GLUT_STROKE_MONO_ROMAN

9 Képek (Images) ► Kép beolvasása:  glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); Beolvas x,y pozíciótól kezdődően width és height méretű téglalap alakú tartományt a *pixels tömbbe. A pixel-fomátumnak megfelelő és adott típusú adatelemekkel dolgozik, a táblázat szerint.

10 névtípus GL_COLOR_INDEX color index GL_RGB piros, zöld, kék komponensek GL_RGBA piros, zöld, kék, alpha komponensek GL_RED piros komponens GL_GREEN zöld komponens GL_BLUE kék komponens GL_ALPHA alpha komponens GL_LUMINANCE fényerősség komponens GL_LUMINANCE_ALPHA fényerősség és alpha komponens GL_STENCIL_INDEX stencil komponens GL_DEPTH_COMPONENET z-buffer komponens A format paraméter lehetséges értékei

11 névadattípus GL_UNSIGNED_BYTE előjel nélküli 8-bites egész GL_BYTE előjeles 8-bites egész GL_BITMAP 8 bites egészben tárolt bitek GL_UNSIGNED_SHORT előjel nélküli 16 bites integer GL_UNSIGNED_INT előjel nélküli 32 bites integer GL_INT 32 bites integer GL_FLOAT egyszeres pontosságú lebegőpontos A type paraméter lehetséges értékei

12 Képek ► Kép kirajzolása:  glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); Frame-bufferbe ír az aktuális raszterpozíciótól kezdődően width és height méretű téglalap alakú tartományt a *pixels tömbből. A pixel- fomátumnak megfelelő és adott típusú adatelemekkel dolgozik, a táblázat szerint.

13 Képek ► Kép kirajzolása:  glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); Frame-bufferben x,y pozíciótól width és height méretű téglalapot másol az aktuális raszterpozícióba. type: GL_COLOR, GL_RGBA, GL_DEPTH_COMPONENT, GL_STENCIL Az adattípust nem kell megadni, mert az adat ilyenkor nem másolódik a processzor memóriájába.

14 Nagyítás, kicsinyítés ► glPixelZoom(GLfloat zoomx, GLfloat zoomy);  zoomx, zoomy a nagyítási faktor, alapértelmezett értéke 1.  Pl. zoomx=zoomy=2 azt jelentené, hogy 1 pixel négy pixelre lenne nagyítva. image.cpp, egérrel mozgatható kép

15 Pixelek tárolása, transzformálása ► glPixelStore{if}(GLenum pname, TYPE param);  Pixel tárolási módok beállítása  GL_UNPACK* paraméterek azt határozzák meg, milyen formátumba kerül az adat a memóriából a frame-bufferbe.  GL_PACK* paraméterek szerepe a frame- bufferból a memóriába íráskor van. Milyen formátumban szeretnénk megkapni a frame- buffer információt.

16 paraméter neve típusa alapértelmezett értéke értékkészlet GL_UNPACK_SWAP_BYTESGLbooleanFALSETRUE/FALSE GL_PACK_SWAP_BYTES GL_UNPACK_LSB_FIRSTGLbooleanFALSETRUE/FALSE GL_PACK_LSB_FIRST GL_UNPACK_ROW_LENGT H GLint0 bármilyen nem- negatív egész GL_PACK_ROW_LENGTH GL_UNPACK_SKIP_ROWSGLint0 GL_PACK_SKIP_ROWS GL_UNPACK_SKIP_PIXELSGLint0 GL_PACK_SKIP_PIXELS GL_UNPACK_ALIGNMENTGLint41,2,4,8 GL_PACK_ALIGNMENT

17 glPixelStore* paraméterei ► *SWAP_BYTES: a byte-ok sorrendjét cseréli fel. (Akkor lehet rá szükség, ha különböző hardverek között osztunk meg adatokat.) ► *LSB_FIRST: a byte-on belüli sorrendet cseréli fel.  pl: LSB_FIRST=FALSE, 0x33 -> LSB_FIRST=TRUE, 0x33 ->

18 glPixelStore* paraméterei A fenti paramétereknek a glReadPixels*(), glDrawPixels*(), glCopyPixels*() hívások esetén van hatása. Egy képen belül definiálni lehet egy kisebb téglalap alakú tartományt, de ekkor a *ROW_LEGTH szélességet meg kell adni. UNPACK és PACK esetben is ugyanez a teendő.

19 glPixelStore* paraméterei ► Egy 6 pixel szélességű képet szeretnénk kimenteni a memóriába. Minden pixelhez 3 byte adat tartozik (RGB). 3*6=18, tehát egy sort 18 byte határoz meg. 32 bites processzor esetén, 4 byte-onként érdemes az adatokat manipulálni, 4*5=20, tehát 2 byte-ot feleslegesen mozgatunk. ► *ALIGNMENT: Megadja, hogy hány byte-onként történjen a byte-ok kezelése  pl. *ALIGNMENT=4, akkor egy 75 bitből álló (bitmap) sor, 12 byte-on tárolódik. (75 bithez 10 byte szükséges, de négyesével olvasunk!)

20 Pixel-Transzfer Műveletek ► A frame-buffer folytonos komponensein (pl. RGB) affin transzformációkat lehet végrehajtani, majd tetszőleges tábla alapján (table lookup) transzformálhatóak.  glPixelTransfer{if}(GLenum pname, TYPE param); ► A pixel transzfer beállítások hatással vannak: glDrawPixels(), glReadPixels(), glCopyPixels(), glTexImage1D(), glTexImage2D(), glGetTexImage() hívásokra.

21 Paraméter neve típus default érték értékkészlet GL_MAP_COLORGLbooleanFALSETRUE/FALSE GL_MAP_STENCILGLbooleanFALSETRUE/FALSE GL_INDEX_SHIFTGLint0 GL_INDEX_OFFSETGLint0 GL_RED_SCALEGLfloat1.0 GL_GREEN_SCALEGLfloat1.0 GL_BLUE_SCALEGLfloat1.0 GL_ALPHA_SCALEGLfloat1.0 GL_DEPTH_SCALEGLfloat1.0 GL_RED_BIASGLfloat0 GL_GREEN_BIASGLfloat0 GL_BLUE_BIASGLfloat0 GL_ALPHA_BIASGLfloat0 GL_DEPTH_BIASGLfloat0 ),(  ),(  ),(  ),(  ),(  ),(  ),(  ),(  ),(  ),(  ),(  ),( 