Udostępnij za pośrednictwem


Określanie wielokąta do tesselacji

Należy określić wielokąt (który może zawierać otwory), który ma zostać podzielony przy użyciu:

W przypadku wielokątów bez otworów proces specyfikacji jest dokładnie taki jak w technologii OpenGL:

  1. Zacznij od gluBeginPolygon.
  2. Wywołaj gluTessVertex dla każdego wierzchołka na obwodzie.
  3. Zakończ wielokąt poprzez wywołanie gluEndPolygon.

Jeśli wielokąt składa się z wielu konturów, w tym otworów i otworów w otworach, należy określić kontury jeden po drugim, poprzedzając je gluNextContour. Podczas wywoływania gluEndPolygonsygnalizuje koniec końcowego konturu i rozpoczyna teselację. Można pominąć wywołanie gluNextContour przed pierwszym konturem. Funkcja gluBeginPolygon rozpoczyna specyfikację wielokąta, który ma być podzielony na fragmenty i kojarzy obiekt podziału, tessobj, z nim. Funkcje wywołania zwrotnego do użycia to te, które są przypisane do obiektu teselacji za pomocą gluTessCallback.

Funkcja gluTessVertex określa wierzchołek w wielokącie, który ma być poddany tessalacji. Wywołaj gluTessVertex dla każdego wierzchołka w wielokącie. Parametr tessobj funkcji to obiekt teselacji, który ma być używany, v zawiera współrzędne trójwymiarowe wierzchołków, a data jest dowolnym wskaźnikiem wysyłanym do funkcji zwrotnej skojarzonej z GLU_VERTEX. Zazwyczaj danych zawiera dane dotyczące wierzchołków, współrzędne tekstury, informacje o kolorze lub inne dane, których może wymagać aplikacja.

Funkcja gluNextContour oznacza początek następnego konturu, gdy wiele konturów tworzy granicę wielokąta do mozaikowania. Parametr typu funkcji może przyjąć wartość GLU_EXTERIOR, GLU_INTERIOR, GLU_CCW, GLU_CWlub GLU_UNKNOWN. Te stałe służą tylko jako wskazówki do tessellacji. Jeśli dobrze to zrobisz, teselacja może pójść szybciej. Jeśli się mylą, są one ignorowane, a tessellation nadal działa.

W przypadku wielokąta z otworami jeden kontur jest konturem zewnętrznym, a pozostałe są wewnętrzne. Jeśli nie wywołasz gluNextContour zaraz po gluBeginPolygon, będzie się przyjmować, że pierwszy kontur jest typu GLU_EXTERIOR.

GLU_CW i GLU_CCW wskazują wielokąty zorientowane zgodnie z ruchem wskazówek zegara i odwrotnie. Wybór, które są zgodne z ruchem wskazówek zegara, a które przeciwnie do ruchu wskazówek zegara, jest arbitralny w trzech wymiarach, ale w każdej płaszczyźnie istnieją dwie różne orientacje; należy konsekwentnie używać typów GLU_CW i GLU_CCW. Użyj GLU_UNKNOWN, jeśli nie wiesz, którego użyć.

Funkcja gluEndPolygon wskazuje koniec specyfikacji wielokąta. Wskazuje również, że tessellation może rozpocząć korzystanie z obiektu tessellation tessobj.