ďťż
Lemur zaprasza
Obiekty z grupy Quadric Obiekt typu Quadric jest obiektem generowanym przez OpenGL zawierającym już w sobie dużą liczbę wielokątów, traktowanych jako jedną całość. I tak obiekt ten może przyjmować różne kształty np. walec, kula, sześcian, ostrosłup, wypełniony okrąg itp. Na początku w procedurze inicjacji OpenGL czyli InitGL() przydzielamy odpowiednią ilość pamięci dla tego obiektu, następnie określamy jego parametry takie jak: czy generować współrzędne dla tekstury, czy obiekt ma być wypełniony itd... Potem w procedurze kreślącej scenę(DrawGL()) można użyć go przez wyświetlenie go na ekranie w określonym kształcie. OPIS NAJWAŻNIEJSZYCH POLECEŃ DLA OBIEKTÓW QUADRICS gluQuadric(); Zwraca wartość typu GLUquadricObj* zawierającą adres pamięci przydzielonej tworzonemu obiektowi. Zwrócona wartość 0 oznacza brak pamięci dla obiektu. gluDeleteQuadric(GLUquadrocObjt *state); - Rozkaz ten usuwa z pamięci obiekt Quadric przekazany w state gluQuadricDrawStyle(GLUquadrocObjt *qobj, Glenum drawstyle); Rozkaz ten określa sposób rysowania obiektu Quadric, który został podany jako pierwszy parametr. Drugi parametr określa ten sposób: GLU_FILL - obiekt jest wypełniony(czyli zbiorem wypełnionych trójkątów) GLU_LINE - obiekt jest zbiorem liń(kontury) GLU_POINT - obiekt jest zbiorem punktów(wierzchołki) gluQuadricNormals(GLUquadrocObjt *qobj, Glenum normals); Określa sposób generowania tzw. normalnych dla obiektu Quadric przekazanego jako pierwszy parametr "qobj". Drugi parametr określa ten sposób: GLU_NONE - żadne normalne nie generowane GLU_FLAT - dla każdego wielokąta generowana tylko jedna normalna GLU_SMOOTH - dla każdego wierzchołka wielokąta generowana normalana Normalna - jest to nic innego jak wetktor jednostkowy(jego współrzędne X,Y,Z ograniczone do wartości 1) wyznaczający kierunek danego wielokąta. Normalne wykorzystywane są przy operacjach na światłach. gluQuadricTexture(GLUquadrocObjt *qobj, Glboolean textureCoords); Rozkaz ten określa czy dla obiektu Quadric, przekazanego jako pierwszy parametr(tj. jego adres) mają być generowane współrzędne tekstury. Drugi parametr może przyjąć wartości: GL_TRUE - tak, generowane współrzędne tekstury(pozwala to np. na proste naciągnięcie tekstury na kulę). GL_FALSE - nie, brak generowania współrzędnych dla tekstury CIĄG DALSZY POLECEŃ - POLECENIA OKREŚLAJĄCE KSZTAŁT(POSTAĆ) OBIEKTU QUADRIC gluCylinder(GLUquadricObj *qobj,Gldouble baseradius, Gldouble topradius, Gldouble height, Gldouble slices, Gldouble stacks); Rozkaz ten rysuje cylinder(można też nim narysować stożek - jedna z podstaw ma wtedy promień równy 0) wykorzystując miejsce w pamięci przekazane przez pierwszy parametr - które wcześniej zostaje przydzielone dla obiektu Quadric. Pozostałe parametry to: baseradius - promień dolnej podstawy topradius - promień górnej podstawy height - wysokość obiektu slices - ilość kątów podstaw(np. 3 to trójkąt, 4 to kwadrat, 6 to sześciokąt, im większa ta liczba tym obiekt ten coraz bardziej przypomina cylinder) stacks - ilość segmentów wysokości gluDisk(GLUquadricObj *qobj,Gldouble innerradius, Gldouble outerradius, Glint slices, Glint loops); Rozkaz ten rysuje obiekt Quadric o kształcie dysku. Parametry: qobj - adres obiektu typu Quadric innerradius - kąt wewnętrzny outterradius - kąt zewnętrzny slices - ilość kątów (np. 3 to trójkąt, 4 to kwadrat, 6 to szęściokąt, im większa tym liczba tym bliżej koła...) loops - określa dokładność tj. ilość mniejszych dysków w rysowanym dysku gluSphere(GLUquadricObj *qobj, Gldouble radius, Glint slices, Glint stack); Rozkaz ten rysuj obiekt Quadric przekazany w parametrze qobj ,o kształcie kuli. Pozostałe parametry ma postać: radius - promień kuli slices - ilość południków stacks - ilość równoleżników gluPartialDisk(GLUquadricObj *qobj, Gldouble innerradius, Gldouble outerradius, Glint slices, Glint loops, Gldouble startangle, Gldouble seepangle); Rozkaz ten rysuje wycinek dysku. Część parametrów identyczna jak w rozkazie gluDisk();. Pozostałe to: startangle - określa od jakiego kąta zacząć rysować wycinek sweepangle - określa wielkość wycinka -> jego kąt Należy pamiętać, że jeśli nie korzystamy z danego obiektu z grupy Quadric to usuwamy go poleceniem gluDeleteQuadric(). Przykład: W kodzie głównym deklarujemy zmienną która przechowa adres pamięci zarezerwowanej dla obiektu Quadric: GLUquadricObj *quadratic; W procedurze inicjacji OpenGL tj. "InitGL()" dajemy: quadratic=gluNewQuadric(); gluQuadricNormals(quadratic, GLU_NONE); gluQuadricTexture(quadratic, GL_TRUE); a w procedurze rysowania sceny "DrawGL()" dajemy: glBindTexture(GL_TEXTURE_2D, texture[0]); //nakładana tekstura wczytana wcześniej gluSphere(quadratic,1.3f,32,32);//narysowanie kuli |