Het gebruik van de media - effect en de androïde ar ES

, het gebruik van de media en de androïde effect van ar ES,,,,,,,,,, 24, deel 2,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen, de media, de androïde. Het effect van de ontwikkeling van kader personeel kan gemakkelijk de foto en video 's veel indrukwekkende visuele effecten.In het kader van het gebruik van de voor de uitvoering van alle gpu beeld van verwerking van het open structuur als input kunnen aanvaarden.In deze handleiding zal je leren hoe een ar es 2 omgezet in beelden om gebruik te maken van de middelen in het kader voor de toepassing van verschillende gevolgen.,,, in het kader van deze voorwaarde, training, je moet de:,, een androïde IDE ter ondersteuning van de ontwikkeling.Als je niet uit de androïde website toegang tot de meest recente versie van de androïde studio.,, een apparaat, de androïde 4 + 2 ar ES gpu ondersteuning en begrip, C.,.,,, 1.Een ar ES milieu, stap 1: het creëren van een,,, glsurfaceview, in uw aanvraag een grafische, je moet worden gebruikt, glsurfaceview,   object.Net als elke andere,,, je kunt het toevoegen aan de activiteiten van een,, of delen daarvan, door in XML - schema 's of in de code is een voorbeeld van het definiëren, in deze handleiding. En je zal er een, glsurfaceview,   object is de enige, het lijkt erop dat je, In de activiteiten van de,,.Dus, in de code van het creëren van het eenvoudiger.Als je het doorgeven aan de setContentView, methoden, en laat het hele scherm je vol.   activiteiten, onCreate, eruit moet zien:,, beschermde nietig oncreate (pakket savedinstancestate {-). OnCreate (savedinstancestate); glsurfaceview waarden = nieuwe glsurfaceview (de); setContentView (overzicht);}, omdat de invloed van De media kader alleen steun ar es 2 of hoger, de waarde van de overdracht, 2, seteglcontextclientversion,,.,,,. Seteglcontextclientversion (2); en om ervoor te zorgen dat, glsurfaceview, toont de inhoud, alleen als het nodig is, door de waarde van de setrendermode, rendermode_when_dirty,,, het standpunt van de methode,.,. Setrendermode (glsurfaceview. Rendermode_when_dirty); stap 2: het creëren van een weergave glsur,,,FaceView. Weergave, die verantwoordelijk is voor de opstelling van de inhoud, glsurfaceview,.,,, het creëren van een nieuwe klasse van de interface glsurfaceview.renderer.Ik noem deze klas, effectsrenderer,.De toevoeging van een fabrikant, voor alle interfaces. Na de klas eruit moet zien: de verwezenlijking van glsurfaceview, les, effectsrenderer. Die openbare effectsrenderer {(context) {}); - de Super (de leegte onsurfacecreated (gl10 ar -, eglconfig) {} - de leegte onsurfacechanged (gl10 ar, int de breedte, - de hoogte van de diepte) {} de leegte ondrawframe (gl10 ar) {}}, ga naar je, activiteiten,   noemen, setrenderer, zodat glsurfaceview, gebruik te maken. Het standpunt van de setrenderer,.,. (de nieuwe effectsrenderer (dit)); redacteur van stap 3:,, lijst publiceren, als je van plan bent je aanvraag op Google spelen, wordt het volgende toegevoegd  , androidmVerschijnen. XML,:,, < gebruik van de Android:glesversion = "0x00020000" androïde eisen = "waar" />,, dit kan ervoor zorgen dat uw aanvraag kan alleen worden aangebracht op de apparatuur ter ondersteuning van twee es 2.   open omgeving is klaar.,, 2.Het creëren van een open vliegtuig, stap 1: de definitie van het,,, glsurfaceview foto 's tonen, niet direct.De foto 's zijn omgezet in een structuur aan een open vorm.In deze handleiding, creëren we een vliegtuig met vier punten.Om het eenvoudig te houden, laten we dit feestje.   voor het creëren van een nieuwe klasse,  , vierkant, namens de partij van deze partij {},.,,, de standaard open coördinaten van de oorsprong van het centrum.Als gevolg van een van de vier hoeken van de coördinaten van de twee eenheden aan beide zijden,,,,,,, de linker hoek in (1), de rechter benedenhoek (1 1), op de hoek in (1), bovenste linker hoek in. (1) de,,, alle voorwerpen die door ons programma moet de driehoek.Een vierkante, we hebben twee driehoeken en een gemeenschappelijke grens.   betekent dit dat de driehoek te coördineren:,, 1: de driehoek (1 1) (1), en (1), - 2: (1) (1) en (1),,, het creëren van een vertegenwoordiger van deze top, die, op het punt van de particuliere [] = - en - een -, 1F, 1F, 1F, 1F, 1F,}; en op het plein, textuur, je moet de coördinatie van de structuur van de aangewezen punten.De textuur, gevolgd door een coördinaten met je mee.   voor het creëren van een reeks zei de textuur van de punten texturevertices [].,, particuliere = {-, 1F, 1F, 1F,,,,,,, -}; stap 2: het creëren van een buffer tegen de coördinaten), hoe kan worden omgezet in de buffer.Laten we deze buffer is aangekondigd, de eerste. FloatBuffer verticesbuffer, particuliere; particuliere FloatBuffer, om de code te schrijven, texturebuffer; - een nieuwe methode, die bekend staat als de buffer, initializebuffers,.Het gebruik van, bytebuffer.allocatedirect, het creëren van een buffer.Omdat, zwevend, gebruik 4 bytes, je moet de generator vermenigvuldiging en de waarde van de omvang van de komende 4,.,,,, bytebuffer.nativeorder, vaststellen van potentiële lokale platform en de buffer van byte, commando 's, waarde.Het gebruik van, asfloatbuffer, omschakeling, buffer. Het voorbeeld van FloatBuffer,,.Na de FloatBuffer, te creëren, het gebruik, de kwijting, belasting - buffer voor de laatste positie.   gebruikt, om ervoor te zorgen dat de buffer is vanaf het begin van de methode, en lezen. De   initializebuffers, inhoud, methode moet zodanig zijn dat:,, initializebuffers () particuliere nietig {ByteBuffer buff = allocatedirect buffer. (vertices.length * 4); fan. Orde (byte. Nativeorder ()); verticesbuffer = fan. Asfloatbuffer (); verticesbuffer. (punten); verticesbuffer. Positie (0); geel = de buffer. Allocatedirect (texturevertices.length * 4); fan. Orde (byte. Nativeorder ()); texturebuffer = fan. Asfloatbuffer (); texturebuffer. (texturevertices); texturebuffer. Positie (0);},TEP - 3: het creëren van een programma, het is tijd om te schrijven over hun gezicht.Shader is slechts een eenvoudige procedure C, loopt in elk afzonderlijk punt in.In deze handleiding, creëert u twee shader shader en fragment shader.,,, C - code shader:,, vec4 positie toekennen; eigenschap vec2 atexposition; vec2 vtexposition; ongeldig Main () {gl_position = a; vtexposition = atexposition;};,, C - code:,,. De precieze mediump drijven; voor De hereniging van sampler2D utexture; vec2 vtexposition; ongeldig Main () {gl_fragcolor = Texture2D (utexture, vtexposition);};,, als je al weet dat open. En deze code moet bekend zijn met je omdat het gemeenschappelijk op alle platforms.Als je niet op de hoogte van deze programma 's, je moet verwijzen naar twee dossiers.Hier is een korte uitleg, dus je begint, het punt is: het is verantwoordelijk voor de opstelling van de afzonderlijke punten.Dat is een, een variabele, gebonden is aan, FloatBuffer,   bevat de coördinaten.Ook de atexposition, is een variabele, zal onvermijdelijk is, FloatBuffer, met inbegrip van het coördineren van de textuur.In een open, gl_position, de variabele, dat de positie van elk punt.En vtexposition, is een variabele, de waarde, de variabele, maar door de versnippering van shader, in deze handleiding voor de partij, fragment shader kleur.Het gebruik van Texture2D nam de kleur, textuur, methoden en de toewijzing van de fragmenten die gl_fragcolor gebruik, met variabele,.,,, shader code moet worden uitgedrukt als  , touw, in de klasse, uiteindelijk de string, particuliere vertexshadercode = "eigenschappen vec4 positie; +" atexposition eigenschap vec2; + ". Nietigverklaring van vtexposition vec2; +" Main () {"en" gl_position = a; + "vtexposition = atexposition;" + "); de particuliere uiteindelijk op touw fragmentshadercode =" precisie mediump drijven; + "voor de hereniging van sampler2D utexture; +" wordt vec2 vtexposition ongeldig; + "Main () {" en "gl_fragcolor = Texture2D (utexture,Vtexposition); "+");,, stap 4: het creëren van een programma, het creëren van een nieuwe methode, initializeprogram, het creëren van een open procedure opgesteld en die bril glcreateshader.,,,,, het creëren van shader voorwerpen en de terugkeer van de verwijzingen naar de vorm, de interpretatie.Het creëren van een shader, de overdracht van waarden, van gl_vertex_shader, het.Ook het creëren van een fragment shader, de overdracht van waarden, van gl_fragment_shader, het.Het gebruik van glshadersource onder,, in verband met de passende shader code shader.Het gebruik van glcompileshader shader code opgesteld,,.,,, en na de opstelling shader, het creëren van een nieuwe procedure, glcreateprogram,.Net als  , glcreateshader, dit ook weer een int, als een referentie - programma.Telefoon, glattachshader, extra shader programma 's.Tot slot, telefoon, gllinkprogram, tussen programma.,,, je methoden en variabelen met betrekking tot eruit moet zien:,, privé - variabelen shader; particuliere fragmentshader; particuliere programma; particuliere nietig initializeprogram () {shader = gles20. Glcreateshader (gles20. Gl_vertex_shader); gles20. Glshadersource (shader, vertexshadercode); gles20. Glcompileshader (shader); fragmentshader = gles20. Glcreateshader (gles20. Gl_fragment_shader); gles20. Glshadersource (fragmentshader, fragmentshadercode); gles20. Glcompileshader (fragmentshader); programma 's = gles20. Glcreateprogram (); gles20. Glattachshader (programma' s, shader); gles20. Glattachshader (programma 's, fragmentshader gles20.gl);Linkprogram (het programma);}, misschien is het je opgevallen hoe methode (methode van de prefix, behoort tot de klasse van de ar), gles20,.Dit is omdat we een ar es 2.Als je denkt dat het gebruik van een hogere versie, dan zou je het moeten gebruiken, gles30, of, gles31,,,,, stap 5: de opstelling van een,, het creëren van een nieuwe methode voor de weergave van de werkelijke, vierkant shader en we de eerder omschreven, wat is je van het,,. Deze methoden moeten doen,,,, glbindframebuffer, het creëren van een buffer tegen (meestal aangeduid als de fbo).,,, gluseprogram, te beginnen met het gebruik van dit programma alleen contact met ons door de waarde van gl_blend.,,,, gldisable, uitschakelen, kleur, en maken gebruik glgetattriblocation.,,, zijn behandeld variabele, locatie, en, in atexposition,   shader code gebruikt, glgetuniformlocation.,,, de constante worden behandeld, als bedoeld in utexture.Shader code.,, het gebruik, de glvertexattribpointer, vereniging, locatie, en, atexposition, en, verticesbuffer, respectievelijk aan de texturebuffer en,,.,,,, de textuur (als bindende parameters voor de tekening door de) fragment shader, duidelijk,., glsurfaceview, de inhoud van het glClear,, en, tot slot, het gebruik van,, om twee driehoek (dus vierkante).,,, voor de opstelling van de code, en eruit moet zien:,,, en foto 's (int textuur) {gles20. Glbindframebuffer (gles20.gl_framebuffer, 0); gles20. Gluseprogram (het programma); gles20 gldisable (gles20.. gl_blend); in de positionhandle = gles20. Glgetattriblocation (programma "locatie"); in de tExturehandle = gles20. Glgetuniformlocation (programma "utexture"); in de texturepositionhandle = gles20. Glgetattriblocation (programma "atexposition"); gles20. Glvertexattribpointer (texturepositionhandle, 2, gles20.gl_float, valse, 0, texturebuffer); gles20. Glenablevertexattribarray (texturepositionhandle); gles20. Glactivetexture (gles20. Gl_texture0); gles20 (. Gles20.gl_texture_2d, textuur); gles20. Gluniform1i (texturehandle, 0); gles20. Glvertexattribpointer (positionhandle, 2, gles20.gl_float, valse, 0, verticesbuffer); gles20. Glenablevertexattribarray (positionhandle); gles20. GlClear (gles20. Gl_color_buffer_bit); gles20. Dit segment (gles20.gl_triangle_strip, 0, 4) toegevoegd;}, een van de nadelen vanProfessionele klasse - buffer, het doel van de programma 's in het openbare plein.,, initializebuffers () () {});; initializeprogram (,, 3.Tekening van het vliegtuig en de textuur, open, op dit moment, Onze uitsmelters niet.We moeten veranderen, zodat wij in de vorige stap in het vliegtuig, maar laten we eerst het creëren van een kaart.De toevoeging van de foto 's van je project, res /chong, MAP.Ik gebruik dat de documenten jpg, bos.Gebruik, BitmapFactory, omgezet in bitmap, het voorwerp van de foto 's.Bovendien, de opslag, de omvang van de afzonderlijke bitmap in de variabele object,,,,, effectsrenderer fabrikant, met de volgende aspecten:,,, particuliere bitmap foto 's; de particuliere photowidth, photoheight; de openbare effectsrenderer (context) {- (); foto' s = BitmapFactory decoderesource (context.. getresources (), r.drawable. Bossen); photowidth = foto 's. Getwidth (); photoheight = foto' s. Getheight ();}, het creëren van een nieuwe methode, generatesquare, bitmap zal worden omgezet in een textuur en het starten van een voorwerp, het plein.Je moet ook een systeem van een gehele reeks referentie textuur.Het gebruik van glGenTextures, start de generator, zal in de index, 0, activeer de textuur.,, de volgende stap, het gebruik, de gltexparameteri, de vaststelling van verschillende eigenschappen, een besluit te nemen over de textuur:,,,, gl_texture_min_filter (wijziging) en, gl_texture_mag_filter (vergroting van de functie), Om ervoor te zorgen dat de gl_linear textuur, ziet er goed uit, zelfs. Het verkleinen van de tekening of gl_texture_wrap_t.,,,,,,, gl_texture_wrap_s, gl_clamp_to_edge, de textuur niet herhalen.,,, tot slot, het gebruik van, teximage2d, grafiek bitmap methode, de methode voor de tenuitvoerlegging van de textuur.  , generatesquare, eruit moet zien:,, de textuur van de nieuwe particuliere internationale [2] =] particuliere Square; particuliere nietig gen;Ratesquare () {gles20. GlGenTextures (2, textuur, 0); gles20. (gles20.gl_texture_2d, textuur [0]); gles20. Gltexparameteri (gles20.gl_texture_2d, gles20.gl_texture_min_filter, gles20. Gl_linear); gles20. Gltexparameteri (gles20.gl_texture_2d, gles20.gl_texture_mag_filter, gles20. Gl_linear); gles20. Gltexparameteri (gles20.gl_texture_2d, gles20.gl_texture_wrap_s, gl_clamp_to_edge gles20.); gles20. Gltexparameteri (gles20.gl_texture_2d, gles20.gl_texture_wrap_t, gles20. Gl_clamp_to_edge); glutils. Teximage2d (gles20.gl_texture_2d foto 's, 0, 0); vierkante = nieuwe vierkante ();}, wanneer, glsurfaceview, veranderingen, onsurfacechanged afmetingen, die methode genoemd.Hier, wil je bellen, glviewport, aangewezen als een nieuwe dimensie.Bovendien, telefoon, glclearcolor, verf, glsurfaceview, zwart.De volgende generatesquare, telefoon, om de textuur en het vliegtuig, -., leegte onsurfacechanged (gl10 ar, breedte en hoogte van de diepte) {gles20. Glviewport (0,0, breedte en hoogte); gles20. Glclearcolor (0,0,0,1); generatesquare ();}, en, ten slotte, bel, vierkant, object, foto 's, er ondrawframe methode voor de weergave van,,.,, - de leegte ondrawframe (gl10 ar) {Square. Tekening (kaart [0]);}, nu, je kan je programma, kijk naar je keuze worden gemaakt voor een vliegtuig van de foto' s van de open structuur.,,,,, 4.Het gebruik van een media - effect, in het kader van de ingewikkelde code schrijven we nu pas, gebruik van de media - effect is de voorwaarde voor het kader.Nu is het tijd om te beginnen met het kader zelf.Toevoeging van de volgende gebieden van je maken,.,, particuliere effectcontext effectcontext; particuliere effecten gestart, effectcontext;,,, door gebruik te maken van effectcontext, createwithcurrentglcontext gebied.Hij is verantwoordelijk voor het beheer van de interne een open context visuele informatie.Met het oog op de optimalisering van de prestaties, die moet worden beschouwd als een.Voeg de volgende code van je, ondrawframe, de methode van het begin.,, als (effectcontext = = = = = = = = nul) (effectcontext effectcontext. Createwithcurrentglcontext ();}, en het creëren van resultaten is heel eenvoudig.Het gebruik van effectcontext, het creëren van een,, effectfactory,   en het gebruik van effectfactory, het creëren van een object, effect.Als het effect van een,, object is beschikbaar, je mag het noemen, van toepassing is, en met een verwijzing naar de oorspronkelijke structuur van het, in ons geval, textuur [0], en een blanco de textuur van de genoemde doelstellingen, in ons geval, textuur [1].Na de toepassing, de methode, de structuur, de [1], bevat die van invloed zijn op de uitkomst.,,, bijvoorbeeld, het creëren en van toepassing, Gray, effecten, dit is je code:,, particuliere nietig grayscaleeffect () {effectfactory. = effectcontext. Getfactory (); de invloed van De fabriek. Createeffect (effect_grayscale effectfactory.); de toepassing van (textuur. [0], photowidth, photoheight, textuur [1]);}, op grond van deze methode, en door ondrawframe,  , textuur [1], op de Plaza, voorwerp, foto 's, de methode.Je ondrawframe, methoden, moeten de volgende code:,, de leegte ondrawframe (gl10 ar) {als (effectcontext = = = = = = = = = = = = = nul) (effectcontext effectcontext createwithcurrentglcontext ();} als (effect.= nul) {}); het effect van grayscaleeffect. Laat ((); de Plaza. Tekening (kaart [1]);},,, de vrijlating van, de methode wordt gebruikt voor de afgifte van alle middelen die van invloed zijn op de,,.Als je de toepassing van programma 's   moet je zien dat deze resultaten:,,,,, kunnen gebruik maken van de andere gevolgen van de toepassing van dezelfde code.Bijvoorbeeld, de volgende code gebruikt, documentaires, de invloed van de particuliere nietig documentaryeffect:, () {effectfactory. = effectcontext. Getfactory (); effect = fabriek. Createeffect (effectfactory. Effect_documentary); de toepassing van (textuur. [0], photowidth, photoheight, textuur [1]);}, het ziet er is, dus:,,,,, een aantal parameters.Bijvoorbeeld, de helderheid van het effect van een, helderheid, parameters en drijvende en waarden.Je kan het gebruik van parameters, eventuele veranderingen van de waarden van de parameters.De volgende code laat zien hoe het:,,, particuliere nietig brightnesseffect () {effectfactory. = effectcontext. Getfactory (); effect = fabriek. Createeffect (effectfactory. Effect_brightness); effect van de vaststelling van de parameters van helderheid, 2f.); worden gebruikt (textuur. [0], [1 photowidth photoheight, textuur,]);}, en het effect   zal uw aanvraag verstrekt de volgende resultaten:,,,,,, in de conclusies van deze handleiding, je hebt geleerd hoe met behulp van de invloed van de media kader dat van toepassing is op verschillende foto 's van je.Dat doet, heb je ook geleerd om opstelling van een vliegtuig met behulp van ar es 2 - toepassing van verschillende textuur,,, - kan worden toegepast in het kader van films en video 's.Als je de video 's, je hoeft alleen maar de gevolgen voor de ondrawframe, video - beelden,.,, je zag drie effecten en in het kader van deze handleiding heeft tientallen je proberen.Om meer te weten te komen over hun, verwijst naar de androïde ontwikkelaars website.,,,,,,







Previous:
Next Page: