Grupul multimedia din stil rusesc

Texturi suprapuse în OpenGL: Introducere.

Primul lucru care ar trebui să aibă loc în procesul de încărcare a unei texturi este apelul glBindTexture. glBinndTexture spune OpenGL textura "id" cu care vom lucra. textele "id" sunt doar un număr pe care îl veți folosi pentru a obține accesul la teksuram. Iată un exemplu de chemare.







Acest apel va crea o textura asociată cu ID-ul 13 al texturii active. Alte apeluri legate de texturarea OpenGL vor funcționa cu această textură. Este important să vă amintiți acest număr, deoarece va fi necesar mai târziu pentru aplicarea reală a texturii în geometrie.

Apelul către glPixelStorei îi spune lui OpenGL cum se aliniază datele care trebuie încărcate. Apelul glPixelStorei este prezentat mai jos.

Acest apel spune OpenGL că datele pixelilor care urmează să fie prelucrate, sunt aliniate în ordinea octet, acest lucru înseamnă că datele sunt de octet odnobu pentru fiecare componentă, unul pentru roșu, unul pentru verde și unul pentru albastru. Rămâneți la interogarea prezentată mai sus dacă nu aveți un tip de date exotice, ceea ce mă îndoiesc foarte mult. Alinierea datelor se va schimba, probabil, pe măsură ce progresați în texturarea OpenGL.

glTexParameteri stabilește diferiți parametri pentru textura OpenGL curentă. Parametrii și efectele lor asupra texturii sunt un subiect separat. Dacă doriți să luați în considerare ceea ce face fiecare solicitare, consultați referințele date la sfârșitul acestui document. Fiecare dintre aceste linii este importantă, deci asigurați-vă că toată lumea o are în programul dvs.

De ce mi-a lipsit descrierea lor dacă sunt atât de importante? Proprietățile pe care le puteți schimba cu aceste interogări sunt importante pentru cel care este mai avansat. Pentru cei care sunt doar de învățare, ar trebui să fie luate de la sine. Odată ce înțelegeți în totalitate cum funcționează maparea texturilor în OpenGL, ar trebui să luați în considerare aceste proprietăți.







glTexEnvf stabilește variabile de mediu pentru textura curentă. Ceea ce face este să spui OpenGL cum textura va funcționa atunci când este redată în scenă. Mai jos este o interogare de probă pe care o folosesc în programele mele.

Ceea ce face este să stabilească textura activă în GL_MODULATE. Atributul GL_MODULATE vă permite să aplicați texturilor efecte cum ar fi iluminarea și colorarea. Dacă nu doriți ca lumina și culoarea să fie aplicate texturii dvs. și doriți să afișați textura neschimbată atunci când este aplicată culoarea, înlocuiți GL_MODULATE cu GL_DECAL.


Aceștia sunt toți oamenii! După ce ați făcut toate cele de mai sus, textura va fi încărcată și gata să se aplice geometriei dvs. Următoarea secțiune va discuta despre aplicarea texturii în geometrie. Dacă acest lucru nu ți se pare clar, uita-te la secțiunea de link-uri de la sfârșitul acestui document pentru un exemplu de cartografiere textura.

Acum, că ai încărcat textura, vrei să faci ceva cu ea, căci acum nu mai e nimic în memorie. Procesul de aplicare a texturii în geometrie depinde foarte mult de datele cu care vă confruntați și de felul în care doriți să le utilizați. Din acest motiv, în această secțiune vă voi da câteva instrucțiuni pentru impunerea texturilor, voi da un exemplu despre cum să texturați un pătrat și să explicați sistemul de coordonate a texturii.

  1. Asigurați-vă că texturarea este activată. Acest lucru se face apelând glEnable (GL_TEXTURE_2D).
  2. Asigurați-vă că atribuiți o textură înainte de a face orice fel de glBegin / glEnd. Nu puteți atribui o textură în interiorul părții începutul / sfârșitul.
  3. Asigurați-vă că definiți coordonatele texturii înainte de fiecare vârf care formează suprafața. Dacă aveți 3 noduri, modelul pentru structura de cartografiere a triunghiului ar fi similar cu acesta: TexCoord; VertexCoord; texCoord; VertexCoord; texCoord; VertexCoord;
  4. Asigurați-vă că stocați id-ul texturii în variabile, ceea ce face lucrurile mai ușoare.
  5. Utilizați glGenTexturi. O modalitate ușoară de a obține un id textură liberă.






Trimiteți-le prietenilor: