Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultät Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Mailingliste
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * Aufgabe 1
          Dokumentation
       * Aufgabe 2
          Dokumentation
       * Aufgabe 3
          Dokumentation
       * Aufgabe 4
          Dokumentation
       * Aufgabe 5
          Dokumentation
       * Aufgabe 6
          Dokumentation
       * Aufgabe 7
          Dokumentation
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2010/11  >  Betriebssysteme  >  Ãœbungen  >  Aufgaben  >  Aufgabe 7

VESAGraphics Klassenreferenz

Treiber für die VESAGrafikkarte. Mehr ...

#include <vesagraphics.h>

Klassendiagramm für VESAGraphics:
Zusammengehörigkeiten von VESAGraphics:

Aufstellung aller Elemente

Öffentliche Methoden

 VESAGraphics (void *frontbuffer, void *backbuffer)
 Konstruktor; bekommt zwei Puffer im Hauptspeicher als Parameter.
void switch_buffers ()
 Tauscht Frontbuffer und Backbuffer aus. Zeichenoperationen über die Methoden von VESAScreen gehen immer in den aktuellen Backbuffer; scanout_frontbuffer kopiert immer den aktuellen Frontbuffer in den Speicher der Grafikkarte.
void scanout_frontbuffer ()
 Kopiert den aktuellen Frontbuffer in den Speicher der Grafikkarte.


Ausführliche Beschreibung

Treiber für die VESAGrafikkarte.

Erweitert VESAScreen um die beiden Methoden switch_buffers() und scanout_frontbuffer(). Mit deren Hilfe ist es möglich eine Art Triplebuffering "per Hand" zu implementieren. Da diese beiden Methoden unter gegenseitigem Ausschluss ausgeführt werden müssen (während scanout_frontbuffer läuft, soll nicht der Puffer umgeschaltet werden) sind sie entweder in der guarded Variante oder im Epilog zu verwenden.

Die Benutzung des Graphikmodus sieht dann grob ungefähr so aus:

  while(true) {
      //Puffer mit Inhalt füllen
      //Umschalten mit switch_buffers()
  }
Den Aufruf von scanout_frontbuffer kann man nun auf zwei Arten durchführen. Zum einen ist es möglich ihn einfach die Schleife zu integrieren. Es ist aber auch möglich den Puffer mit einer festen Frequenz neu zu befüllen. Dazu ruft man scanout_frontbuffer sinnigerweise im Epilog des Timers auf.
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
  Impressum   Datenschutz Stand: 2011-01-31 10:46   BO, DL