OOStuBS/MPStuBS
|
Treiber für die VESAGrafikkarte. Mehr ...
#include <vesagraphics.h>
Öffentliche Methoden | |
VESAGraphics (void *frontbuffer, void *backbuffer) | |
Konstruktor; bekommt zwei Puffer im Hauptspeicher als Parameter. Mehr ... | |
bool | switch_buffers () |
Tauscht Frontbuffer und Backbuffer aus. Mehr ... | |
void | scanout_frontbuffer () |
Kopiert den aktuellen Frontbuffer in den Speicher der Grafikkarte. Mehr ... | |
Öffentliche Methoden geerbt von VESAScreen | |
void | init () |
Initalisiert das Grafiksubsystem; Aufruf am besten in der Main-Funktion. | |
VBEModeData_t * | find_mode (unsigned int width, unsigned int height, unsigned char bpp) |
Sucht einen Modus aus der Modustabelle. Mehr ... | |
bool | set_mode (VBEModeData_t *mode) |
Setzt einen vorher per find_mode ausgewählten Modus. Mehr ... | |
void | clear_screen () |
Setzt sämtliche Pixel im aktuellen Puffer auf schwarz. Mehr ... | |
void | print_pixel (const Point &p, const Color &color) |
Zeichnet einen Pixel an Punkt p. Mehr ... | |
void | print_line (const Point &start, const Point &end, const Color &color) |
Zeichnet eine Linie von start nach end. Mehr ... | |
void | print_rectangle (const Point &top_left, const Point &bottom_right, const Color &color, bool filled=true) |
Zeichnet ein Rechteck. Mehr ... | |
void | set_font (const Font &new_font) |
Ändern der Schriftart für Textausgabe im Grafikmodus. Mehr ... | |
void | print_text (char *string, int len, const Color &color) |
Gibt Text an der globalen Cursorposition (analog CGA_Screen) auch mit Zeilenumbruch aus(allerdings ohne scrollen. Mehr ... | |
void | print_text (char *string, int len, const Color &color, const Point &pos) |
Ausgabe von Text an der Position pos (ohne automatischen Zeilenumbruch) Mehr ... | |
void | print_image (const Point &p, PNG &image, unsigned width=0, unsigned height=0, unsigned offset_x=0, unsigned offset_y=0) |
Ausgabe eines PNG Bild[auschnitt]es TEXT Gibt eine Spritebitmap aus, und überblendet sie mit Hilfe von Alpha-blending anhand des Alpha-Kanals mit dem schon im Framebuffer vorhanden Hintergrund. Das Layout eines Pixels ist RGBA. Funktioniert bis jetzt nur in 24/32bpp Modi. In GIMP lassen sich Bitmaps als C-Source exportieren. Diese kann mann dann hiermit verwenden. Mehr ... | |
void | print_image (const Point &p, const GIMP &image, unsigned width=0, unsigned height=0, unsigned offset_x=0, unsigned offset_y=0) |
Ausgabe eines mit GIMP erzeugten Bild[auschnitt]es TEXT Gibt eine Spritebitmap aus, und überblendet sie mit Hilfe von Alpha-blending anhand des Alpha-Kanals mit dem schon im Framebuffer vorhanden Hintergrund. Das Layout eines Pixels ist RGBA. Funktioniert bis jetzt nur in 24/32bpp Modi. In GIMP lassen sich Bitmaps als C-Source exportieren. Diese kann mann dann hiermit verwenden. Mehr ... | |
void | print_image (const Point &p, const SpritePixelRGB8 *image, unsigned width, unsigned height) |
Ausgabe eines farbigen Sprites. Mehr ... | |
void | print_image (const Point &p, const SpritePixelRGBA8 *image, unsigned width, unsigned height) |
Ausgabe eines farbigen Sprites mit Alpha-Blending. Mehr ... | |
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:
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.
VESAGraphics::VESAGraphics | ( | void * | frontbuffer, |
void * | backbuffer | ||
) |
Konstruktor; bekommt zwei Puffer im Hauptspeicher als Parameter.
void VESAGraphics::scanout_frontbuffer | ( | ) |
Kopiert den aktuellen Frontbuffer in den Speicher der Grafikkarte.
bool VESAGraphics::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.
true
wenn der vorherige Frontbuffer in den Speicher der Graphikkarte übergeben wurde wurde