ďťż

18

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
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza