Johdanto OpenGL: ään Androidissa

OpenGL on Open Graphics Library. Se on periaatteessa sovellusliittymä, jota android käyttää tukemaan korkealaatuista grafiikkaa, kuten 2D- ja 3D-grafiikkaa. OpenGL: n yleinen käyttö tietojen siirtämiseen CPU: lta GPU: lle. Tämän suorittavat OpenGL Objects. Se on käyttöympäristöjen välinen graafinen sovellusliittymä. Tässä aiheessa aiomme oppia OpenGL: stä Androidissa.

OpenGL-objektit koostuvat tiloista ja tiedoista, ja ne auttavat siirtämään tietoja CPU: n ja GPU: n välillä. OpenGL ES on suosittu OpenGL API -määritys, joka on erityisesti omistettu sulautetuille järjestelmille.

Android tukee OpenGL: ää Native Development Kit: n (NDK) ja sen puitteiden sovellusliittymän avulla. Android-kehyksen perustunnit auttavat sinua luomaan ja muokaamaan grafiikkaa. Näiden luokkien kanssa käytetty OpenGL ES -sovellusliittymä on nimeltään GLSurfVaceiew.Renderer ja GLSurfaceView. Hyvä tuntemus näiden luokkien toteuttamisesta on hyödyllistä OpenGL: n käyttämisessä Android-sovelluksessa.

GLSurfaceView

Voit piirtää ja käsitellä objekteja tässä näkymässä. Tätä luokkaa on helppo käyttää, koska voit luoda GLSurfaceView-objektin ja lisätä siihen Renderorin. Voit kaapata kosketusnäytön tapahtumia laajentamalla GLSurfaceView-luokkaa kosketuskuuntelijoiden toteuttamiseksi.

GLSurfaceView.Renderer

GLSurfaceView.Renderer-käyttöliittymä sisältää menetelmiä, joita tarvitaan grafiikan piirtämiseen GLSurfaceView-sovelluksessa. Tämän rajapinnan toteutus tulisi tarjota erillisenä luokana, joka liitetään GLSurfaceView-ilmentymään käyttämällä GLSurfaceView.setRenderer () -sovellusta .

Seuraavat menetelmät on otettava käyttöön GLSurfaceView.Renderer-käyttöliittymän toteuttamisessa:

  • onSurfaceCreated () : Tätä menetelmää kutsutaan GLSurfaceView-luomisen aikana.
  • onDrawFrame () : Tätä menetelmää kutsutaan jokaisen GLSurfaceView-uudelleenarvioinnin aikana.
  • onSurfaceChanged () : Tätä menetelmää kutsutaan, kun GLSurfaceView-geometria muuttuu (koko, suunta jne.).

Kuinka OpenGL Androidissa toimii?

OpenGL-objekteja on useita tyyppejä. Esimerkiksi Vertex-puskuriobjekti, joka voi tallentaa merkin kärkiä. Toinen esimerkki on Texture, joka voi tallentaa kuvatietoja.

Verkon ominaisuuksia edustavat tiedot, kuten vertikaalit, normaalit ja UV-koordinaatit, ladataan Vertex-puskuriobjektiin ja lähetetään sitten GPU: lle käsittelyä varten. Kun nämä tiedot ovat GPU: ssa, nämä tiedot käyvät läpi, joka tunnetaan nimellä OpenGL Rendering Pipeline.

Päätehtävät, joista Rendering Pipeline on vastuussa, ovat kärkipisteiden muuntaminen oikeaan koordinaattijärjestelmään, merkin kärkien kokoaminen, värin tai tekstuurin käyttö ja merkin näyttäminen oletuskehyksen puskurilla, joka on näyttö.

OpenGL: n renderointiputkiprosessi Androidissa koostuu kuudesta vaiheesta, kuten alla:

  1. Per-Vertex-käyttö
  2. Alkeellinen kokoonpano
  3. Alkeellinen käsittely
  4. rasterization
  5. Fragmenttien käsittely
  6. Fragmenttikohtainen toiminta

Per-Vertex-käyttö

Ensimmäinen ja tärkein askel kuvan tuottamisessa on geometriadata muuntaa yhdestä koordinaattijärjestelmästä toiseen koordinaattijärjestelmään.

Alkeellinen kokoonpano

Huiput kerätään pareihin 2, 3 ja enemmän tässä nimenomaisessa vaiheessa ja primitiivi kootaan esimerkiksi kolmioon.

Alkeellinen käsittely

Kun alkeisyhdistelmät on koottu, ne testataan tarkistaakseen, kuuluvatko ne näkymätilavuuteen. Jos he eivät läpäise tätä testiä, heidät jätetään huomioimatta lisävaiheissa. Tätä testiä kutsutaan leikkautumiseksi.

rasterization

Sitten primitiivit jaotellaan pienempien yksiköiden paloiksi ja vastaavat kehyspuskurin pikseleitä. Jokainen näistä pienemmistä yksiköistä tunnetaan sitten nimellä Fragments.

Fragmenttien käsittely

Kun primitiivinen on rasteroitu, geometriaan lisätään väri tai tekstuuri.

Fragmenttikohtainen toiminta

Lopuksi, fragmentit saatetaan useisiin testeihin, kuten:

  • Pikselin omistustesti
  • Saksitesti
  • Alfa-testi
  • Stencil-testi
  • Syvyystesti

Näistä kuudesta vaiheesta kahta vaihetta ohjaavat ohjelmat, joita kutsutaan Shaderiksi.

Lyhyesti sanottuna Shader on vain sinä kehittämä pieni ohjelma, joka asuu GPU: ssa. On olemassa erityinen grafiikkakieli, joka tunnetaan nimellä OpenGL Shading Language (GLSL), johon shader on kirjoitettu. Kahta tärkeää OpenGL-putkilinjan vaihetta, jossa varjostin tapahtuu, kutsutaan ”Per-Vertex Processing ”- ja” Per-Fragment Processing ”-vaiheiksi.

Per-Vertex-vaiheessa prosessoitava varjostin tunnetaan nimellä Vertex Shader. Per-fragmentti-vaiheessa prosessoitava varjostin tunnetaan nimellä Fragment Shader. Kärkivarjostimen perimmäinen ja perimmäinen tavoite on antaa merkin kärkien lopullinen muunnos renderöintiputkelle, kun taas fragmenttivarjottimen tavoitteena on antaa väritys- ja tekstuuritiedot jokaiselle pikselin otsikolle kehyspuskurille.

Kun tiedot siirretään OpenGL-renderointiputken kautta, joko 3D- tai 2D-malli ilmestyy laitteen näytölle.

GL-ohjelma

Neuvonta OpenGL: lle Androidissa

Jos olet aloittelija OpenGL-ohjelmoijassa, jotkut näistä alla olevista kohdista eivät ehkä ole vielä tavanneet sinua. Alla on joitain ohjeita, joiden avulla voit huolehtia käyttäessäsi OpenGL-sovellusta Androidissa. Ne ovat yleisiä virheitä. Joten pidä nämä aina mielessä.

  1. Normaalien mitoitus väärin valaistusta varten
  2. Huono Tessellaatio valaistaa
  3. Muista aina Matrix-tila
  4. Projektiomatriisipino on täynnä
  5. Ei asetettu kaikkia Mipmap-tasoja
  6. Taustavalon pikselien lukeminen

Edellytykset OpenGL: lle Androidissa

Alla on edellytys OpenGL: lle Androidissa.

Ohjelmistotaidot

  • C, eli ohjelmointikieli.
  • C ++ -tiedot eivät ole välttämättömiä, mutta niistä on apua.
  • Useiden kirjastojen käyttö, joka voi olla joko staattinen tai dynaaminen.

Matematiikka

  • Tietoja vektoreista sekä 2D- että 3D-muodossa.
  • matriisit
  • Perustason matematiikan käsitteet.

Nämä ovat kaikki pää- ja peruskonsepteja, joita tarvitaan OpenGL: n aloittamiseen. Saatat joutua oppimaan lisää matematiikan käsitteitä, mutta päätyttyäsi keskitasolle. Mutta se riippuu täysin sinusta. Voit siirtää monia asioita eri kirjastojen avulla.

Johtopäätös: OpenGL Androidissa

Siksi OpenGL on täysin toimiva sovellusliittymä, joka on alkeellisella tasolla ja antaa ohjelmoijalle mahdollisuuden osoittaa tehokkaasti grafiikkalaitteistoa ja hyödyntää sitä. Suuri joukko korkean tason kirjastoja ja sovelluksia käyttää OpenGL: ää sen suorituskyvyn, ohjelmoinnin helppouden, laajennettavuuden ja laajan tuen vuoksi.

Suositeltava artikkeli

Tämä on opas OpenGL: ään Androidissa. Tässä olemme keskustelleet Android-prosessin työskentelyprosessista ja OpenGL: n edellytyksistä. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. WebGL vs. OpenGL
  2. Mikä on Cognos?
  3. Mikä on Jira-ohjelmisto?
  4. Ura Azuressa