Lineær algebra med grafiske anvendelser / V2009 Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
C++ for Java-programmerere
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Intro til programmering i Processing
Lag film. Lag video •Videoteknologien har utviklet seg raskt de siste årene. Digital video er i ferd med å avløse analoge systemer. Med digital video.
Gjenfinningssystemer og verktøy II
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Unit testing Gruppe 2: Kjartan Haugen Jon Gunnar Bjørkmo
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Beveglsesmønstre og koordinatsystem Grunnleggende frame.. X er rett fremover. Origo ligger i akse 1 med z rett opp. Høyredreid system.!
IS-102 Klassedefinisjoner
Gjenfinningssystemer og verktøy II
Gjenfinningssystemer og verktøy II
Forelesningsnotater SIF8039/ Grafisk databehandling
Forelesningsnotater SIF8039/ Grafisk databehandling
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
En gang til!? .
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
LocMoc : Avatar 3D – Visualisering av menneskelige bevegelser ved bruk av Java og Coin3D. En presentasjon av: Øivind Hoff Johansen og Jon Kåre Sørensen.
INF150 Programmering mandag 11.9
Forelesningsnotater SIF8039/ Grafisk databehandling
Teknikker for å bedre design- prosessen -Design by contract -Prototyping design -Fault-tree analyses.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Flash og ActionScript - Nye muligheter Jostein Nordengen.
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
Java 3 Mer om uttrykk Terminal I/O Forgreninger
RGB •The RGB fargemodell er en additiv fargemodell der rødt, grønt og blått lys er lagt sammen på ulike måter å gjenskape et bredt spekter av farger.
Studentliv - Kurs i PR og markedsføring - Modul 10 1 Arbeid på PC Fortrolighet i arbeidet med PC Skikk og bruk IT-kontrakten Spørsmål?
1 Forelesningsnotater SIF8039/ Grafisk databehandling Notater til forelesninger over: Kapittel 3: ”Input and Interaction” i: Edward Angel: ”Interactive.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
1 Pointere, referencer, struct’s mv.. 2 Erklæringer Eksempel på erklæringer int i, *ip, f ( ), *fip( ), (*pfi) ( ); Erklærer en integer, en pointer til.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 7 Grafikk Fra AWT til Swingside 2.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Jæger: Robuste og sikre systemer INF150 Programmering Kapittel 2: Problemløsning Kapittel 3.1 og 3.2.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 2 Data og uttrykk. 2.1 Strengar Ein tekststreng er eit objekt i Java, definert av String klassen Meir om denne klassen i kapittel 3 Vi bruker.
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 3 Bruk av klasser og objekt. 3.1 Å lage objekt Eit variabelnamn i Java representerer Ein primitiv verdi (f eks boolean, int ) Eit objekt (f eks.
Kapittel 5 Vilkårssetningar og løkker. 5.1 Boolske uttrykk George Boole ( ), britisk matematikar Utvikla teori om logikk ved bruk av symbol i.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Kapittel 10 Exceptions Handtering av exceptions Ein exception er eit objekt som representerer ein feil eller eit unntak Exceptions blir kasta av.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Datakortet – Modul 3 Word 2003, Kap Modul 3.
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
Sist....
IS-102 Interaksjon med objekter
Spillutvikling Introduksjon til spillutvikling i Processing
Bokser Håkon Tolsby Håkon Tolsby.
Begynnerkurs i Python Realfagskonferansen 2019 Henrik H. Løvold
Utskrift av presentasjonen:

Lineær algebra med grafiske anvendelser / V2009 Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL Jan H. Nilsen Leksjon 1 Side 1 Introduksjon Hva er grafisk databehandling? side 2 Noen eksempler på datagrafikk side 3 Undervisningsopplegg og læremateriellside 4 Introduksjon til OpenGL med Javabinding, JOGLside 5-6 Hva kan OpenGL gjøre: side 7 Basisstrukturen i et OpenGL-program kan være enkel:side 8 OpenGL primitiver: side 9 OpenGL metode-/kommandosyntaksside 10 Datatyperside 11 OpenGL en tilstandsmaskin Tilstandsvariableside 12 Noen tilstandsvariableside 13 OpenGL rendering pipeline side Biblioteker relatert til OpenGLside Et lite eksempel:side 19-20

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 2 Hva er grafisk databehandling? Omfatter alle aspekter ved det å produsere tegninger eller syntetiske/virtuelle bilder på en dataskjerm Dvs alt fra det å tegne punkter og linjer på en dataskjerm eller et digitalt framvisningsmedium, til virtuelle, nesten fotorealistiske modellbilder. I grafisk databehandling blir de 2D eller 3D-objekter, som skal tegnes ut, først beskrevet ved matematiske modeller. En 3D-dimensjonal terning kan for eksempel modelleres matematisk ved å definere et tredimensjonalt koordinatsystem med origo og akser med enheter på aksene, og så angi koordinatene til hjørnepunktene på terningen i dette koordinatsystemet. Veien fra den matematiske beskrivelsen av objektene/senen (3d-koordinater) til uttegning på en skjerm, rendering, medfører en rekke operasjoner. Ulike grafiske programvaresystemer vil som oftest ha ulike måter å gjøre dette på. I dette faget skal vi benytte det grafiske programvaresystemet OpenGL.

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 3 Noen eksempler på datagrafikk Web-siden: Fra OpenGL Programming Guide ”The Red Book” Appendix J Plate 1. The scene from the cover of this book, with the objects rendered as wireframe models. Plate 2. The same scene using fog for depth-cueing (lines further from the eye are dimmer). Plate 3. The same scene with antialiased lines that smooth the jagged edges Plate 4. The scene drawn with flat-shaded polygons (a single color for each filled polygon). Plate 5. The scene rendered with lighting and smooth-shaded polygons. Plate 6. The scene with texture maps and shadows added. Plate 7. The scene drawn with one of the objects motion-blurred. The accumulation buffer is used to compose the sequence of images needed to blur the moving object. Plate 8. A close-up shot - the scene is rendered from a new viewpoint. Plate 9. The scene drawn using atmospheric effects (fog) to simulate a smoke- filled room.

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 4 Undervisningsopplegg og læremateriell Tre forelesninger: –Introduksjon til grafisk databehandling ved bruk av OpenGl med Javabinding JOGL –Transformasjoner –Farge og lys Tre øvinger Læremateriellet er forelesningene, øvingene og stoff hentet fra nettet: Se: lag\Grafikk\NyttigeLenker\Nyttige_lenkerGLJOGL.pdf lag\Grafikk\NyttigeLenker\Nyttige_lenkerGLJOGL.pdf En eldre versjon av boka OpenGL Programming Guide ”Red Book” ligger på nettet. Mesteparten av lærestoffet finnes i deler av kap

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 5 Introduksjon til OpenGL med Javabinding, JOGL OpenGL 1.er etablert som en industristandard og referansestandard for generell 3D grafikk 2.er utviklet av Silicon Graphics. Silicon Graphics 3.utvikles nå under kontroll av et: Architectural Review Board. Beskrivelse av denne virksomheten finnes på: ARB. Her finnes også linker til beskrivelser, kurs og eksempler.ARB Det finnes en masse informasjon om OpenGL på nettet. OpenGL er utviklet og beskrevet som en plattformuavhengig pakke og kan kjøres på en rekke plattformer: MS-Windows, Linux, Unix, MacOS, OS/2. Vi kan benytte OpenGL fra flere programmeringsspråk. Det finnes i dag komplette språkbindinger for i hvert fall C, C++, C#, Fortran og Java.

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 6 Introduksjon til OpenGL fortsetter OpenGL er et programvaregrensesnitt- mot grafisk hardware(skjerm, printer, grafikkakselerator,.. osv). OpenGL består av ca 250 basismetoder/kommandoer som kan benyttes til å spesifisere objekter og operasjoner som er nødvendige for å lage interaktive, 3D grafiske anvendelser OpenGL er hardware og plattformuavhengig. ( Kan kjøres på Windows, MAC, Linux, Unix,..) OpenGL innholder opprinnelig ingen kommandoer/metoder for å utføre vindus/skjermoperasjoner eller for å motta brukerinput OpenGL tilbyr ingen høy-nivå-kommandoer/metoder for å beskrive modeller av 3D-objekter (glu og glut) OpenGL tilbyr kommandoer/metoder for å bygge egne modeller av objekter på grunnlag av et lite sett med geometriske primitiver: (hjørne)punkter, linjer og polygoner

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 7 Hva kan OpenGL gjøre: Konstruere former/objekter på grunnlag av geometriske primitiver og dermed visualisere matematiske beskrivelser av objektene. (OpenGL betrakter punkter, linjer, polygoner, digitale bilder og bitmaps som primitiver) Ordne objekter i 3D-rom og velge betraktningsposisjon og belysning for å se på objektene. Beregne fargen på objektene. Fargene kan være eksplisitt gitt av anvendelsen, bestemt av betraktningsbetingelser, eller ved tekstur på objektene, og av kombinasjoner av disse tre beregningsmetodene. Omforme de matematiske beskrivelsene av objektene og objektenes tilhørende farger, til pixler på skjermen. OpenGL kan også utføre andre operasjoner som for eksempel eliminere skjulte flater, tåkelegge, osv.

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 8 Basisstrukturen i et OpenGL-program kan være enkel: Hovedoppgavene er: Initiere visse tilstander som kontrollerer hvordan OpenGL ”rendrer”(render) objekter eller hele sener Spesifisere objektene som skal ”rendres”. Render: Den prosessen som en datamaskin utfører når den skaper (tegner opp) digitale bilder av objekter på grunnlag av modeller av objektene. Modellene av objektene er matematiske modeller. Modellene blir konstruert på grunnlag av et lite sett med geometriske primitiver : punkter, linjer og polygoner. Primitivene er spesifisert av objektenes hjørne/overflatepunkter. Det endelige produktet etter en renderingsprosess er et bilde som består av pixler tegnet på en dataskjerm.

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 9 OpenGL primitiver:

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 10 OpenGL metode-/kommandosyntaks OpenGL metoder skrevet i java, begynner med gl.gl + Metodenavn. Sammensatte metodenavn i OpenGL skrives med store bokstaver også for hvert av de egne ordene i det sammensatte navnet. Konstanter skrives med store bokstaver og understrekningstegn mellom de sammensatte ordene. Se eksemplet under: Eks Tegning av et polygon: gl.glClearColor(0.0, 0.0, 0.0, 0.0); //angir fargen som skal benyttes til å rense fargebufferet: svart gl.glClear(GL.GL_COLOR_BUFFER_BIT); //renser fargebuf. og setter fargen til rensefargen. gl.glColor3f(1.0f, 1.0f, 1.0f); // Setter fargen på objektene som skal tegnes: hvit gl.glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); //enabler en ortogonal projeksjon og angir synsvolum gl.glBegin(GL.GL_POLYGON); //Start tegn. Def. hvilken type primitiv som skal benyttes gl.glVertex2f(-0.5f, -0.5f); // Angir verdier på polygonets hjørnepunkter (2D) gl.glVertex2f(-0.5f, 0.5f); gl.glVertex2f(0.5f, 0.5f); gl.glVertex2f(0.5f, -0.5f); gl.glEnd(); //Slutt på tegning av polygonet gl.glFlush(); // Sikrer at tegnekommandoene virkelig blir utført Vi ser at for enkelte av metodenavnene så står det 2f eller 3f foran parentesene. Det betyr at antall argumenter er henholdsvis 2 eller 3 og at datatypen på argumentene er float.

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 11 Datatyper SuffixData TypeTypical Corresponding C-language Type Typical Corresp. Java Type OpenGL Type Definition b8-bit integersigned charbyteGLbyte s16-bit integershort GLshort i32-bit integerlongintGLint, GLsizei f32-bit floating- point float GLfloat, GLclampf d64-bit floating- point double GLdouble, GLclampd ub8-bit unsigned integer unsigned charGLubyte, GLboolean us16-bit unsigned integer unsigned shortGLushort ui32-bit unsigned integer unsigned longGLuint, GLenum, GLbitfield

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 12 OpenGL en “tilstandsmaskin” OpenGL settes i en tilstand/modus som forblir slik til den blir endret. Tilstandene kan gjelde farge, koordinattransformasjoner,.. Sett farge gl.glColor3f(1.0f, 1.0f, 1.0f); Setter fargen til hvit. Etter dette vil hvert objekt som tegnes bli hvitt, helt til den gjeldende fargen settes til noe annet. Mange tilstandsvariabler refererer til moduser/tilstander som enten kan slås på eller av. Dette kan gjøres med gl.glEnable() og gl.glDisable() gl.glEnable(GL.GL_DEPTH_TEST); //Enables Depth Testing Verdien på tilstandsvariablene kan finnes ved metodekallene: gl.glGetBooleanv(), gl.glGetDoublev(), gl.glGetFloatv(), gl.glGetIntegerv(), gl.glGetPointerv(), gl.glIsEnabled()

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 13 Noen tilstandsvariabler for farge Table B-5 : Coloring State Variables State VariableDescriptionAttribute Group Initial ValueGet Command GL_FOG_COLORFog colorfog0, 0, 0, 0glGetFloatv() GL_FOG_INDEXFog indexfog0glGetFloatv() GL_FOG_DENSITYExponential fog densityfog1.0glGetFloatv() GL_FOG_STARTLinear fog startfog0.0glGetFloatv() GL_FOG_ENDLinear fog endfog1.0glGetFloatv() GL_FOG_MODEFog modefogGL_EXPglGetIntegerv() GL_FOGTrue if fog enabledfog/enableGL_FALSEglIsEnabled() GL_SHADE_MODELglShadeModel() settinglightingGL_SMOOTHglGetIntegerv() GL_PROJECTION_MA TRIX Projection matrix stack--IdentityglGetFloatv() gl.glShadeModel(GL.GL_SMOOTH); //Enables Smooth Color Shading

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 14 OpenGL rendering pipeline 1.Inndata: Geometriske data eller pixeldata 2.Display lister: mellomlagring av inndata 3.Evaluators: Evaluatorer tilbyr metoder for å utlede/bestemme/beregne hjørnepunkter for å kunne tegne ut en 3D-flate på grunnlag av kontrollpunktene. 4.Per-Vertex Operasjoner: Samlingen av hjørnepunkter vil bli konvertert til primitiver, e.g. linjer, polygoner osv. Romlige koordinater blir transformert og projisert fra en posisjon i 3D verden til en posisjon på skjermen, 2D. 5.Primitive Assembly Klipping er en viktig del av primitiv assembly. 6.Texture Assembly: OpenGL kan legge textur-bilder på geometriske objekter 7.Rasterisering. Omforming av geometriske- og pixel-inndata til fragmenter. 8.Fragmentoperasjoner(skjermpixler) Før de endelige pixleverdiene blir lagret i bildelageret/framebufferet, blir det utført en rekke operasjoner som kan endre og fjerne fragementer

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 15 OpenGL rendering pipeline 1.Inndata: Geometriske data eller pixeldata 2.Display lister: mellomlagring av inndata 3.Evaluators: Alle geometriske primitiver kan beskrives av hjørnepunkter (Vertices). Noen flater kan beskrives av kontrollpunkter og matematiske basisfunksjoner. Evaluatorer tilbyr metoder for å utlede/bestemme/beregne hjørnepunkter for å kunne tegne ut flaten basert på kontrollpunktene. 4.Per-Vertex Operasjoner: Samlingen av hjørnepunkter vil bli konvertert til primitiver, for eks. linjer polygoner osv. Romlige koordinater blir transformert og projisert fra en posisjon i 3D verden til en posisjon på skjermen. 5.Primitive Assembly Klipping er en viktig del av primitiv assembly. Punkt klipping, linje og polygon- klipping. Perspektiv divisjon. Objekter langt borte ser mindre ut. Resultatet av P.A. er fullstendige geometriske primitiver som er transformert og klippet med rettfarge og dybde og også med texturverdier og retningslinjer for rasterisering. 6.Texture Assembly: OpenGL kan legge textur-bilder på geometriske objekter for å få de til å se mer realistiske ut.

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 16 OpenGL rendering pipeline 7Rasterisering. Omforming av geometriske- og pixel-inndata til fragmenter. Hver fragmentrute tilsvarer en pixel i bildebufferet. Når hjørnepunkter, vertices, knyttes sammen til linjer eller indre pixler beregnes for å fylle polygoner, blir linje og polygonstriper, linjebredde, punktstørrelse, skyggeleggingsmodell og overdekkingsberegninger for på unngå alliasing, vurdert. Farge og dybdeverdier blir tilordnet hver enkelt pixel/fragmentrute. 8 Fragmentoperasjoner(skjermpixler) Før de endelige pixlverdiene blir lagret i bildelageret/ framebufferet, blir det utført en rekke operasjoner som kan endre og til og med fjerne fragementer. Alle disse operasjonene kan enables eller disables, dvs slås av eller på. Den første operasjonen som kan bli slått på er tekstur, hvor et teksturelement blir generert fra teksturminnet for hvert fragment og lagt oppe på fragmentet. Så kan eventuelt tåkeberegninger bli utført. Deretter kan følgende tester utføres, scissor/klippetesten(default klipperektangel matcher størrelsen på vinduet på skjermen og klippetesten er slått av). Så kan det utføres en alpha/gjennomsiktighetstest, og dybdebuffer- test for å fjerne skjulte flater. Dersom et fragment ikke består en påslått-test, kan det medføre at den videre prosesseringen av en fragmentrute avsluttes. Til slutt kan blending (det innkommende fragmentets R,G,B og alpha-verdier blir kombinert med de samme R,G,B-verdiene på det pixelet som allerede er lagret på den samme plassen i bildebufferet), dithering (kan øke fargeoppløsningen på bekostning av romlig oppløsning ved at fargeverdien i et pixel, blir beregnet på grunnlag av omgivende pixler), logiske operasjoner (OR, XOR og Invert) og maskering av en bit-maske bli utført. Etter alt dette blir det grundig prosesserte fragmentet lagt på riktig plass i skjermminnet som en pixelverdi.

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 17 Biblioteker relatert til OpenGL GLU (OpenGL Utility Library) Inneholder mange rutiner/metoder som benytter flere lavnivå OpenGL metoder til å utføre oppgaver som b.a. å sette opp matriser for ulike betraktningsorienteringer: glu.gluPerspective(GLfloat fovy, GLfloat h/ Glfloat w, Glfloat near, GLfloat far); GLU-rutinene begynner med glu.gluMetode/rutinenavn()

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 18 Biblioteker relatert til OpenGL GLUT (OpenGL Utility Tookit) OpenGL er uavhengig av vindussystemer og operativsystemer. OpenGL inneholder ingen kommandoer for å åpne vinduer eller lese hendelser fra tastatur eller mus. GLUT forenkler åpning av vinduer og registrering av input. OpenGL’s tegnekommandoer er begrenset til å generere enkle geometriske primitiver (punkter, linjer og polygoner) GLUT inneholder en god del rutiner som lager mer kompliserte 3d-objekter (teapot, torus(smultringer), kuler osv). GLU inneholder også noen rutiner som kan generere noen av de samme figurene som GLUT (kule, sylinder, skiver)

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 19 Et lite eksempel: Tegning av en trekant og en firkant Enkelt rammeverk for kjøring av OpenGl-programmer i Java /* */ import java.awt.*; // klassene Color og Graphics import java.util.*; import javax.swing.*; // klassene JFrame og JPanel import javax.media.opengl.*; // JOGL class Vindu extends JFrame { public Vindu(String tittel) { setTitle(tittel); setDefaultCloseOperation(EXIT_ON_CLOSE); TegningOv1_1JOGL tegningen = new TegningOv1_1JOGL(400, 400); add(tegningen); pack(); } /*Klassen som inneholder main*/ class GrafikkEksempelOv1JOGL { public static void main(String[] args) { Vindu etVindu = new Vindu("En trekant og en firkant"); etVindu.setVisible(true); }

Lineær algebra med grafiske anvendelser. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL V2009 Jan H. Nilsen Leksjon 1, side 20 Et lite eksempel: Tegning av en trekant og en firkant Del av tegnefila/klassen TegningOv1_1JOGL : public void drawGLScene(GLAutoDrawable glDrawable) { GL gl = glDrawable.getGL(); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); //Clear the Color buffer and the Depth Buffer gl.glLoadIdentity(); //Initializes the current matrix to an identity matrix gl.glTranslatef(-1.5f,0.0f,-8.0f); // Move Left 1.5 Units and Into The Screen 8 gl.glBegin(GL.GL_TRIANGLES); // Start Drawing Triangles gl.glVertex3f( 0.0f, 1.0f, 0.0f); // Top gl.glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left gl.glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right gl.glEnd(); // End Drawing the Triangle gl.glTranslatef(3.0f,0.0f,0.0f); // Move Right 3 Units gl.glBegin(GL.GL_QUADS); // Start Draw a Quad gl.glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left gl.glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right gl.glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right gl.glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left gl.glEnd(); // Done Drawing the Quad } /** void display() Draw to the canvas. */ /* Purely a Java thing. Simple calls drawGLScene once GL is initialized*/ public void display(GLAutoDrawable glDrawable) { GL gl = glDrawable.getGL(glDrawable); drawGLScene(glDrawable); // Calls drawGLScene() glDrawable.swapBuffers(); //Swap buffers gl.glFlush();// Tvinger tidligere buffrede OpenGL kommandoer til å utføres med en gang. }