Cartografia Texturilor - Open GL

Laborator
4.7/10 (3 voturi)
Conține 1 fișier: doc
Pagini : 18 în total
Cuvinte : 4047
Mărime: 164.92KB (arhivat)
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Valeriu Manuel
Un laborator documentat despre OPEN-GL.

Extras din laborator

In zilele noastre, texturile sunt in majoritate standard in privinta jocurilor. Cu acest scop a fost creat si OpenGL-ul. Spre deosebire de rigidul si neobisnuitul DirectX API, crearea texturilor nu este o forma de pedeapsa. Singurul lucru cu care trebuie sa-ti bati capul este sa incadrezi parametrii si mediul creat in decor.

O textura este o imagine aplicata pe un polygon. Prin atasarea vertexurilor (in spariul ecranului) la puncte de control numite coordonate texturale u si v (in spatiul texturilor), obtinem o interpolare pe ecran. Texturile sunt in mod obisnuit folosit pentru a adauga o infatisare unor suprafete ce ar fi dificil de produs daca s-ar folosi poligoane.

Fig. 1. Transformarile formeaza spatii texturale in spatial ecranului.

Exista un lucru foarte important de luat in seama cand se folosesc texturile in OpenGL: pentru o performanta cat mai buna, texturile trebuie sa fie imagini patrate si sa aiba dimensiunea putere de 2. Deci, dimenisiunile bune folosite pentru texturi sunt: 2, 4, 8, 16, 32, 64, 128, 256, 512, …

Numele texturilor

Pentru a incepe, ne trebuie in primul rand un nume pentru textura noastra. Acesta este in general un numar pe care OpenGL-ul il foloseste sa indexeze toate texturile diferite. Pentru a denumi o textura trebuie sa apelam functia glGenTextures.

#define NR_MAX_TEXTURI 2

GLuint texture [NR_MAX_TEXTURI];

glGenTextures(2,texture);/* aici se genereaza doua obiecte textura */

Acum ca am denumit textura, putem sa trecem de la o textura la alta folosind functia glBindTexture. De fapt aceasta allege cu ce textura se lucreaza. In acest moment, ar trebui sa observi ca sunt doua tipuri de texturi in OpenGL, 1D si 2D. Foarte probabil nu vei folosi 1D, asa ca vom prezenta texturile 2D. Deci hai sa selectam numele texturii pe care tocmai am creat-o.

// allege textura curenta

glBindTexture( GL_TEXTURE_2D, texture[0] );Texture Parameters

Daca vrem sa folosim o textura diferita va trebui sa folosim: texture[1], texture[2], etc. In exemplul nostrum, alegem doua texturi (NR_MAX_TEXTURI 2): numai texture[a] si texture[1] sunt disponibile aici.

Acum putem incepe lucrulla textura curenta. In primul rand, trebuie sa dam parametrii texturii. In al doilea rand, trebuie sa incarcam datele texturii. Inainte sa incepem, ar trebui sa declaram situatia cadrului textural. Cadrul exact pe care il vei decalra poate sa fie diferit de cel prezentat aici. GL_MODULATE preia culoarea si datele din textura si le multiplica cu datele din glColor si/sau sistemul de iluminare.

// alegeti modulate pentru a amesteca textura cu culoarea pentru umbre/nuante

glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );

In continuare avem patru parametrii texturali pe care trebuie sa ii declaram. Aici putem crea efecte precum filtrarea texturala biliniara sau triliniara, dar si mipmapping-ul. Deasemenea putem spune daca textura se impatureste/indoaie la capete sau este dreapta. Repet pentru ca este cea mai obisnuita folosire. Cititi comentariile prntru detalii astura modului in care lucreaza fiecare.

// cand zona de texturare este mica, filtrul biliniar cel mai apropiat mipmap

glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST );

// cand zona de texturare este mare, filtrul bilinear originalul glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );

// textura se indoaie/impatureste la capete (repeat) glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );

glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

Functia glTexParameter() este o parte extreme de importanta a texturarii in OpenGL, aceasta functie determina comportamentul si modul de afisare al texturilor cand sunt redate. In cele ce urmeaza avem o sumedenie de parametric si efectul lor asupra texturii redate. Fiecare textura poate avea propriile proprietati, care nu sunt globale. Proprietatile unei texturi nu vor afecta alte texturi.

Preview document

Cartografia Texturilor - Open GL - Pagina 1
Cartografia Texturilor - Open GL - Pagina 2
Cartografia Texturilor - Open GL - Pagina 3
Cartografia Texturilor - Open GL - Pagina 4
Cartografia Texturilor - Open GL - Pagina 5
Cartografia Texturilor - Open GL - Pagina 6
Cartografia Texturilor - Open GL - Pagina 7
Cartografia Texturilor - Open GL - Pagina 8
Cartografia Texturilor - Open GL - Pagina 9
Cartografia Texturilor - Open GL - Pagina 10
Cartografia Texturilor - Open GL - Pagina 11
Cartografia Texturilor - Open GL - Pagina 12
Cartografia Texturilor - Open GL - Pagina 13
Cartografia Texturilor - Open GL - Pagina 14
Cartografia Texturilor - Open GL - Pagina 15
Cartografia Texturilor - Open GL - Pagina 16
Cartografia Texturilor - Open GL - Pagina 17
Cartografia Texturilor - Open GL - Pagina 18

Conținut arhivă zip

  • Cartografia Texturilor - Open GL.doc

Alții au mai descărcat și

Curs C++

Limbajele C si C++ sunt limbaje de programare de nivel înalt. Limbajul C a aparut în anii 1970 si a fost creat de Dennis Ritchie în...

Hackeri

Hackerii sunt pasionati ai informaticii, care, de obicei au ca scop „spargerea” anumitor coduri, baze de date, pagini web etc. Ei sunt considerati...

Grafică pe calculator

Computer Graphics Cristian Rusu Office 3-8 cristian.rusu@ucv.cl What will be? It will not be an ENGLISH course! ENGLISH will be an...

3D Gaming - AICon

1 Prezentarea generală a aplicatiei AICon AICon este un joc cu grafica tridimensionala destinat tuturor iubitorilor de jocuri de tip First person...

Ai nevoie de altceva?