Wprowadzenie do OpenGL w Androidzie

OpenGL oznacza Open Graphics Library. Jest to w zasadzie interfejs API używany przez Androida do obsługi grafiki o wysokiej wydajności, takiej jak grafika 2D i 3D. Ogólne wykorzystanie OpenGL do przesyłania danych z CPU do GPU. Odbywa się to za pomocą obiektów OpenGL. Jest to graficzny interfejs API dla wielu platform. W tym temacie poznamy OpenGL w Androidzie.

Obiekty OpenGL składają się ze stanów i danych i służą do przesyłania danych między procesorem a GPU. OpenGL ES to popularna specyfikacja OpenGL API, która jest szczególnie dedykowana dla systemów wbudowanych.

OpenGL w Androidzie jest obsługiwany przez Androida za pomocą Native Development Kit (NDK) i jego frameworkowego interfejsu API. Podstawowe klasy w systemie Android pomagają tworzyć i edytować grafiki. Interfejs API OpenGL ES używany z tymi klasami nazywa się GLSurfVaceiew.Renderer i GLSurfaceView. Dobra znajomość implementacji tych klas jest pomocna w korzystaniu z OpenGL w aplikacji na Androida.

GLSurfaceView

W tym widoku możesz rysować i manipulować obiektami. Korzystanie z tej klasy jest łatwe, ponieważ można utworzyć obiekt GLSurfaceView i dodać do niego Renderer. Możesz przechwytywać zdarzenia na ekranie dotykowym, rozszerzając klasę GLSurfaceView w celu zaimplementowania detektorów dotykowych.

GLSurfaceView.Renderer

Interfejs GLSurfaceView.Renderer zawiera metody wymagane do rysowania grafiki w GLSurfaceView. Implementacja tego interfejsu powinna być zapewniona jako osobna klasa dołączona do instancji GLSurfaceView za pomocą GLSurfaceView.setRenderer () .

Musisz zaimplementować następujące metody implementacji interfejsu GLSurfaceView.Renderer:

  • onSurfaceCreated () : Ta metoda jest wywoływana podczas tworzenia GLSurfaceView.
  • onDrawFrame () : Ta metoda jest wywoływana przy każdym przerysowaniu GLSurfaceView.
  • onSurfaceChanged () : Ta metoda jest wywoływana, gdy zmienia się geometria GLSurfaceView (rozmiar, orientacja itp.).

Jak działa OpenGL w Androidzie?

Istnieje kilka rodzajów obiektów OpenGL. Na przykład obiekt bufora wierzchołków, który może przechowywać wierzchołki znaku. Drugim przykładem jest tekstura, która może przechowywać dane obrazu.

Dane, takie jak wierzchołki, normalne i współrzędne UV, które reprezentują cechy siatki, są ładowane do obiektu bufora wierzchołków, a następnie przesyłane do GPU w celu przetworzenia. Gdy znajdą się w GPU, przechodzą te dane, zwane potokiem renderowania OpenGL.

Główne zadania, za które odpowiedzialny jest Rendering Pipeline, to konwersja wierzchołków do właściwego układu współrzędnych, składanie wierzchołków znaku, zastosowanie koloru lub tekstury oraz wyświetlanie znaku na domyślnym buforze ramki, którym jest ekran.

Proces renderowania OpenGL w Androidzie składa się z sześciu etapów, jak poniżej:

  1. Operacja na wierzchołek
  2. Prymitywne zgromadzenie
  3. Prymitywne przetwarzanie
  4. Rasteryzacja
  5. Przetwarzanie fragmentów
  6. Operacja na fragment

Operacja na wierzchołek

Pierwszym i najważniejszym krokiem do renderowania obrazu jest przekonwertowanie danych geometrycznych z jednego układu współrzędnych na inny układ współrzędnych.

Prymitywne zgromadzenie

Wierzchołki są zbierane w pary 2, 3 i więcej w tym konkretnym etapie, a prymityw jest składany, na przykład trójkąt.

Prymitywne przetwarzanie

Po złożeniu prymitywów są one testowane w celu sprawdzenia, czy mieszczą się w objętości widoku. W przypadku, gdy nie przejdą tego konkretnego testu, zostaną zignorowani w dalszych krokach. Ten test nosi nazwę przycinania.

Rasteryzacja

Następnie prymitywy są dzielone na mniejsze jednostki odpowiadające pikselom w buforze ramki. Każda z tych mniejszych jednostek jest wówczas znana jako Fragmenty.

Przetwarzanie fragmentów

Kiedy prymityw został zrasteryzowany, kolor lub tekstura są stosowane do geometrii.

Operacja na fragment

Na koniec fragmenty poddawane są różnym testom, takim jak:

  • Test własności pikseli
  • Test nożycowy
  • test alfa
  • Test matrycowy
  • Test głębokości

Z tych sześciu etapów dwa etapy są kontrolowane przez programy zwane Shaders.

Krótko mówiąc, Shader to niewielki program, który jest tworzony tylko przez ciebie, który mieszka w GPU. Istnieje specjalny język graficzny znany jako OpenGL Shading Language (GLSL), w którym zapisany jest moduł cieniujący. Dwa ważne etapy w potoku OpenGL, w których odbywa się moduł cieniujący, nazywane są etapami „przetwarzania na wierzchołek” i „przetwarzania na fragment”.

Moduł cieniujący przetwarzany na etapie „Na wierzchołek” jest znany jako Moduł cieniujący wierzchołek. Moduł cieniujący przetwarzany na etapie „Per-Fragment” jest znany jako Moduł cieniujący Fragment. Ostatecznym i podstawowym celem modułu cieniującego wierzchołki jest ostateczna transformacja wierzchołków znaku w potoku renderowania, podczas gdy celem modułu cieniującego fragmentów jest przekazanie danych kolorowania i tekstury do każdego nagłówka piksela bufora ramki.

Gdy dane są przekazywane przez rurociąg renderowania OpenGL, na ekranie urządzenia pojawi się model 3D lub 2D.

Program GL

Porady dotyczące OpenGL w systemie Android

Jeśli jesteś początkującym w programatorze OpenGL, niektóre z poniższych punktów mogły nie być jeszcze przez Ciebie spotykane. Poniżej znajduje się kilka wskazówek, którymi należy się zająć podczas korzystania z OpenGL w systemie Android. To są typowe błędy. Zawsze miej to na uwadze.

  1. Nieprawidłowe skalowanie norm dla oświetlenia
  2. Zła teselacja szkodzi oświetleniu
  3. Zawsze pamiętaj o swoim trybie macierzy
  4. Przepełnienie stosu matrycy projekcyjnej
  5. Nie ustawiam wszystkich poziomów Mipmap
  6. Odczytywanie pikseli luminancji

Wymagania wstępne dla OpenGL w Androidzie

Poniżej znajdują się wymagania wstępne dotyczące OpenGL w systemie Android.

Umiejętności w zakresie oprogramowania

  • C, to znaczy język programowania.
  • Znajomość języka C ++ nie jest konieczna, ale jest pomocna.
  • Wykorzystanie różnych bibliotek, które mogą być statyczne lub dynamiczne.

Matematyka

  • Znajomość wektorów w 2D i 3D.
  • Matryce
  • Podstawowe pojęcia matematyczne na poziomie.

Są to wszystkie główne i podstawowe pojęcia potrzebne do rozpoczęcia pracy z OpenGL. Być może będziesz musiał nauczyć się kilku pojęć matematycznych, ale po przejściu na poziom średniozaawansowany. Ale to całkowicie zależy od ciebie. Możesz pomijać wiele rzeczy za pomocą różnych bibliotek.

Wniosek: OpenGL w systemie Android

Dlatego OpenGL jest w pełni funkcjonalnym API, który jest na poziomie pierwotnym i pozwala programiście skutecznie zająć się i wykorzystać sprzęt graficzny. Wiele bibliotek wysokiego poziomu oraz aplikacji korzysta z OpenGL ze względu na jego wydajność, łatwość programowania, rozszerzalność oraz szerokie wsparcie.

Polecany artykuł

To był przewodnik po OpenGL w Androidzie. Tutaj omówiliśmy proces działania i warunki wstępne OpenGL w Androidzie. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. WebGL vs OpenGL
  2. Co to jest Cognos?
  3. Co to jest Jira Software?
  4. Kariera na platformie Azure