In- och utenheter. Händelsebaserad programmering i GLUT. Interrupt-baserad interaktion. Sampling / polling. Händelsebaserad interaktion (forts.

Relevanta dokument
Varför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL

OpenGL. grafikbibliotek? Nackdelar med OpenGL. Fördelar med OpenGL. En introduktion till OpenGL. OpenGL. rdvara. Grafikhårdvara.

En introduktion till OpenGL. Gustav Taxén

Fönstersystem. Objektorientering och händelsebaserad programmering. Applikation. Interaktionstoolkit. Händelsehanterare och grafiktoolkit

Starta ett fönster... Hur håller tkinter reda på musklick? Olika sätt att organisera fönsterinnehåll. Och för att placera våra widgets

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java

SgLib Simple Graphics Library

E09 - Totally Tool Time

Grafiska användargränssnitt i Java

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

3.5 Visuell programmering

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

OpenGL-översikt. Mer OpenGL. Består-av-hierarki. Hierarkiska modeller. Från hierarki till kod, steg 1. Lokala koordinatsystem

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Varför behövs det? I Allegro finns t.ex. stöd för:

LEU240 Mikrodatorsystem

Lab5 för prgmedcl04 Grafik

Föreläsning 2. Operativsystem och programmering

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

Objektorientering i allmänhet

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

CE_O3. Nios II. Inför lab nios2time

Windows Forms Winstrand Development

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

C++ Slumptalsfunktioner + switch-satsen

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

DAT043 - föreläsning 8

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert AWT. Paket för hantering av grafik

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Operativsystem och användargränssnitt

Datorsystemteknik Föreläsning 7DAVA14

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Användarhandledning för koppling av dokument

Objektorienterad programmering Föreläsning 2

Grafik i DrRacket AV TOMMY KARLSSON

Lösningar till tentamen i EIT070 Datorteknik

Objektorientering och händelsebaserad programmering. Gustav Taxén

Författare: Juha Söderqvist IT-GUI. Version 1.0. Datum

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

Institutionen för elektro- och informationsteknologi, LTH

Brädspelet Mulan. Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker. Göteborg 1999.

Klassen javax.swing.timer

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Växtviskaren EITF11 Digitala projekt VT15, I12

KURSMÅL WINDOWS STARTA KURSEN

Datorövning 1. int sgd(int m, int n) { int rest; while ( n!= 0 ) { rest = m % n; m = n; n = rest; return m;

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Slutrapport Get it going contracts

Trimble Communication Network Release notes Page 1

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs Verónica Gaspes. IDE-sektionen.

Introduktion till programmering, hösten 2011

Programmering av inbyggda system 2014/2015

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Mekanismer. (implementation)

Modern Programmering (2546) Tentamen lördag

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

DAT043 - Föreläsning 7

Mer om grafiska komponenter. Händelsestyrda program

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

Datorsystem Laboration 2: Minnesmappade bussar

Lektion 4 - SMD006/SMD117

Typkonvertering. Java versus C

Handbok Dela Skrivbord. Brad Hards Översättare: Stefan Asserhäll

Egna genvägar. Subhashish Pradhan T.C. Hollingsworth Översättare: Stefan Asserhäll

Polling (cyklisk avfrågning) Avbrott

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Enkla variabler kontra referensvariabel

C++ Objektorientering - Klasser. Eric Elfving

Datorteknik. Föreläsning 4. Polling och avbrott. Institutionen för elektro- och informationsteknologi, LTH. Mål

Fönsterhanterare för X-Windows

F8: Undantagshantering

PROGRAMMERINGSTEKNIK TIN212

Allmänt. Välkommen till SVENSKA VÅGs datorprogram för viktinsamling på PC.

Grafiska användargränssitt och händelsehantering

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

WINDOWS PRESENTATION FOUNDATION LEKTION 1

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Exemple på Tentauppgifter Webbprogrammering

Trimble Communication Network Release notes Page 1

TDDC74 Lab 04 Muterbara strukturer, omgivningar

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Transkript:

Den första datormusen Douglas Englebart, 1968. programmering i GLUT Gustav Taxén CID gustavt@nada.kth.se In- och utenheter Alla datorsystem har in- och utenheter som behandlar information. Data skickas mellan in- och utenheter och program som körs i datorsystemet. Tre metoder för datautbyte: sampling/polling interrupt-baserad interaktion händelsebaserad interaktion Sampling / polling Direkt förfrågan till in/ut-enheten. Läs/skriv data och fortsätt exekveringen. Leder ofta till loopar i programkoden om enheten måste hanteras kontinuerligt. Interrupt-baserad interaktion Programmet prenumererar på förändringar i enhetens status genom att tillhandahålla en subrutin. Operativsystemet anropar subrutinen direkt då enhetens status ändras. Avbrottet kan ske när som helst. Kan ge upphov till komplicerad kod som hanterar asynkroniteten i avbrotten. interaktion Operativsystem eller ramsystem tar hand om förändringar i status hos enheter. För varje statusförändring genereras ett händelseobjekt som innehåller information om förändringen. Programmet prenumererar på händelser genom att tillhandahålla en callback-subrutin. interaktion (forts.) Callback-subrutinen anropas vid särskilda tillfällen. Programmet sägs då fånga händelsen. Mellan rapporteringarna lagras händelseobjekt i en händelsekö. Programmet kan generera händelser genom att anropa ramsystemets egna callback-subrutiner. 1

Händelsebaserat system Inenhet Interrupt-subrutin Händelsebaserat system (forts.) Utenhet Utdata-subrutin Program Händelsekö Callback-lista Callbacksubrutin Callbacksubrutin Dispatcher Dispatcher Händelsekö Fönstersystem Fönstersystemets delar Kan integreras i operativsystemet (Windows) eller köras under ett operativsystem (X Window System) Utöver händelser för in- och utenheter tillkommer händelser för Indelas ofta i en delsystemhierarki. Händelsehanterare Hanterar händelser, ofta både för fysiska enheter och för Grafiktoolkit Funktioner för att rita grafiska primitiver i ett Interaktionstoolkit Funktioner för att hantera användargränssnitt (menyer, scrollbars, textareor, etc.). Fönstersystemets delar (forts.) Applikation Interaktionstoolkit Händelsehanterare och grafiktoolkit Operativsystem Hårdvara OpenGL Grafikbibliotek för att styra grafikhårdvara. Specifikationen är oberoende av operativsystem. Funktionaliteten måste koordineras med operativ- och fönstersystem. Koordinationen är inte systemoberoende. 2

GLUT Gömmer systemberoende delar av OpenGL. Ger möjlighet att köra exakt samma OpenGL-program på olika system. Enkelt fönstersystem som innehåller den minsta gemensamma nämnaren för alla fönstersystem. GLUT-system Applikation GLUT Interaktionstoolkit OpenGL Händelsehanterare och grafiktoolkit Operativsystem Hårdvara Funktionalitet i GLUT Initiering av OpenGL Fönsterhantering Händelsehantering (inenheter och annat) Menyer Extra grafiska primitiver för OpenGL Exempel: initiera GLUT #include <GL/glut.h> void display(void) { /* Rita om fönster med OpenGL */ glutinit(&argc, argv); glutcreatewindow( My window ); glutdisplayfunc(display); glutmainloop(); return 0; Fönster i GLUT Händelser i GLUT Varje fönster har en identitet (ett heltal). Aktivt Fönsterfunktioner påverkar det aktiva fönstret. Innan GLUT anropar en callback-subrutin sätts det aktiva fönstret till relevant Fönster-ID kan hämtas. Aktivt fönster kan sättas explicit. Händelser kan indelas i tre typer: Fönsterhändelser Menyhändelser Globala händelser Callback-registrering för fönster- och menyhändelser gäller aktuellt Globala händelser kan ha högst en callback. 3

Några GLUT-händelser Redisplay (måste fångas av alla fönster) Reshape Keypress Mouse button Passsive mouse movement Active mouse movement Entry Exempel: callbackregistrering void display(void) { void reshape(int width, int height) { glutcreatewindow( Window 1 ); glutdisplayfunc(display); glutreshapefunc(reshape); Menyer i GLUT Hierarkiska pop-up-menyer. För varje fönster gäller att en meny kan kopplas till varje musknapp. Varje meny äger en lista med menyrubriker och en meny-callback. Varje menyrubrik som inte är en undermeny har en identitet (ett heltal). Menyer i GLUT (forts.) Aktiv meny. Då en menyrubrik registreras läggs den sist i den aktiva menyn. Meny-ID kan hämtas. Aktiv meny kan sättas explicit. Menyorganisation Exempel: menyregistrering Fönsterlista Menylista Meny-callback #define ITEM_1 10 Rubriker Callback void menucallback(int itemid) { if (itemid == ITEM_1) { Rubriker Callback Meny-callback glutcreatewindow( My window ); glutcreatemenu(menucallback); glutaddmenuentry( Item 1, ITEM_1); glutattachmenu(glut_left_button); 4

Globala händelser Är inte associerade med något speciellt En callback för varje global händelsetyp. Exempel: idle-händelse, timer. 5