Sprawozdanie5, Studia, PWR, 5 semestr, Grafika komputerowa


0x08 graphic
POLITECHNIKA WROCŁAWSKA

Instytut Informatyki, Automatyki i Robotyki

Zakład Systemów Komputerowych

Wprowadzenie do grafiki komputerowej

Kurs: INE4234L

Sprawozdanie z ćwiczenia nr 5

TEMAT ĆWICZENIA OpenGL-teksturowanie powierzchni obiektów

Wykonał:

Elżbieta Tchorowska

Termin:

Np. PT/P 16.00-19.00

Data wykonania ćwiczenia:

03.12.2010

Data oddania sprawozdania:

14.01.2011

Ocena:

Uwagi prowadzącego:

Spis treści

Cel ćwiczenia

Celem było stworzenie ostrosłupa z teksturowaną powierzchnią oraz zmodyfikowanie jajka z poprzednich laboratoriów tak, by również posiadał teksturowaną powierzchnię.

Wykonanie

Stworzenie ostrosłupa

Najpierw należało stworzyć ostrosłup. Wykonano z kwadratu i czterech trójkątów.

0x08 graphic

Kwadrat umieszczono na płaszczyźnie 2D. Jego wierzchołki wybrano tak, jak pokazano w kodzie. Dobrano odpowiedni kierunek tworzenia wierzchołków, by teksturowana powierzchnia znajdowała się „od spodu” kwadratu. Góra będzie zabudowana trójkątami.

0x08 graphic

0x08 graphic

Wysokość w przestrzeni wybrano na 0.75. Kolejność podawania wierzchołków do renderowania została ustalona tak, by teksturowana powierzchnia była widoczna z zewnątrz ostrosłupa, a nie od wewnątrz.

Teksturowanie ostrosłupa

Kod należało powiększyć o bardzo długą funkcję teksturowania, której z powodu jej długości nie zamieszczę. (Funkcja do obejrzenia na stronie zsk)

Stworzono teksturę piłek tenisowych, którą wklejono do katalogu z projektem, nazwano 1.tga, gdyż tekstura powinna być w tym formacie. Rozdzielczość 256x256.

Następnie należało umieścić w kodzie następujący fragment:

0x08 graphic

I ostrosłup został wyświetlony w piłeczki tenisowe.

Teksturowanie jajka

Jajko poddano teksturowaniu w identyczny sposób. Wykorzystano do tego efekt poprzednich laboratoriów z oświetleniem. Dla lepszego efektu jajka, obiekt obracał się przy zmianie położenia kursora przy wciśniętym lewym przycisku myszy, a źródło światła zmieniało położenie po ruchu przy wciśniętym prawym klawiszu myszy.

Wybrano teksturę muszelek.

Wyniki

Teksturowany ostrosłup wyglądał tak:

0x08 graphic

Teksturowane jajko wyglądało tak:

0x08 graphic

str. 4

glEnable(GL_CULL_FACE); //teksturowanie jednej strony

pBytes = LoadTGAImage("1.tga", &ImWidth, // Przeczytanie obrazu tekstury

&ImHeight, &ImComponents, &ImFormat); //z pliku o nazwie 1.tga

glTexImage2D(GL_TEXTURE_2D, 0, ImComponents, // Zdefiniowanie tekstury 2-D

ImWidth, ImHeight, 0, ImFormat, GL_UNSIGNED_BYTE, pBytes);

free(pBytes); // Zwolnienie pamięci

glEnable(GL_TEXTURE_2D); // Włączenie mechanizmu teksturowania

glTexEnvi(GL_TEXTURE_ENV, // Ustalenie trybu teksturowania

GL_TEXTURE_ENV_MODE, GL_MODULATE);

// Określenie sposobu nakładania tekstur

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glBegin (GL_TRIANGLES);

glTexCoord3f(0.5f, -0.5f,0.0f);

glVertex3f (0.5f, -0.5f,0.0f);

glTexCoord3f(0.5f, 0.5f,0.0f);

glVertex3f (0.5f, 0.5f,0.0f);

glTexCoord3f(0.0f, 0.0f,0.75f);

glVertex3f (0.0f, 0.0f,0.75f);

glEnd();

glBegin (GL_TRIANGLES);

glTexCoord3f(0.5f, 0.5f,0.0f);

glVertex3f (0.5f, 0.5f,0.0f);

glTexCoord3f(-0.5f, 0.5f,0.0f);

glVertex3f (-0.5f, 0.5f,0.0f);

glTexCoord3f(0.0f, 0.0f,0.75f);

glVertex3f (0.0f, 0.0f,0.75f);

glEnd();

glBegin (GL_TRIANGLES);

glTexCoord3f(-0.5f, 0.5f,0.0f);

glVertex3f (-0.5f, 0.5f,0.0f);

glTexCoord3f(-0.5f, -0.5f,0.0f);

glVertex3f (-0.5f, -0.5f,0.0f);

glTexCoord3f(0.0f, 0.0f,0.75f);

glVertex3f (0.0f, 0.0f,0.75f);

glEnd();

glBegin (GL_TRIANGLES);

glTexCoord3f(-0.5f, -0.5f,0.0f);

glVertex3f (-0.5f, -0.5f,0.0f);

glTexCoord3f(0.5f, -0.5f,0.0f);

glVertex3f (0.5f, -0.5f,0.0f);

glTexCoord3f(0.0f, 0.0f,0.75f);

glVertex3f (0.0f, 0.0f,0.75f);

glEnd();

glBegin (GL_QUADS);

glTexCoord2f (-0.5f,0.5f);

glVertex2f (-0.5f,0.5f);

glTexCoord2f (0.5f,0.5f);

glVertex2f (0.5f,0.5f);

glTexCoord2f (0.5f,-0.5f);

glVertex2f (0.5f,-0.5f);

glTexCoord2f(-0.5f, -0.5f);

glVertex2f (-0.5f, -0.5f);

glEnd();



Wyszukiwarka