SDL Surface: Unterschied zwischen den Versionen
I0n0s (Diskussion | Beiträge) |
End (Diskussion | Beiträge) (Hinweis auf deprecation.) |
||
(11 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | + | = SDL_Surface = | |
+ | |||
− | |||
− | |||
== Name == | == Name == | ||
'''SDL_Surface''' - Struktur der graphischen Oberfläche | '''SDL_Surface''' - Struktur der graphischen Oberfläche | ||
− | + | ||
+ | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
type | type | ||
− | + | '''TSDL_Surface'''=record | |
− | flags: Uint32; | + | ''flags'' : Uint32; //nur Lesezugriff |
− | format: PSDL_Pixelformat; | + | ''format'' : PSDL_Pixelformat; //nur Lesezugriff |
− | w, h: Integer; | + | ''w'', ''h'' : Integer; //nur Lesezugriff |
− | pitch: Uint16; | + | ''pitch'' : Uint16; //nur Lesezugriff |
− | pixels: Pointer; | + | ''pixels'' : Pointer; //Lese- und Schreibzugriff |
− | clip_rect: SDL_Rect; | + | ''clip_rect'' : SDL_Rect; //nur Lesezugriff |
− | refcount: Integer; | + | ''refcount'' : Integer; //meistens nur Lesezugriff |
end; | end; | ||
//es existieren weitere private Felder die nicht aufgeführt sind | //es existieren weitere private Felder die nicht aufgeführt sind | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
Zeile 28: | Zeile 29: | ||
{| border="1" rules="all" | {| border="1" rules="all" | ||
! ''flags'' | ! ''flags'' | ||
− | | | + | | Gesetzte Flags |
|- | |- | ||
! ''format'' | ! ''format'' | ||
− | | Pixelformat (siehe [[ | + | | Pixelformat (siehe [[SDL_PixelFormat]]) |
|- | |- | ||
! ''w'', ''h'' | ! ''w'', ''h'' | ||
Zeile 40: | Zeile 41: | ||
|- | |- | ||
! ''clip_rect'' | ! ''clip_rect'' | ||
− | | Surface | + | | Surface Clipping Rechteck |
|- | |- | ||
! ''refcount'' | ! ''refcount'' | ||
− | | | + | | Referenzzähler - wird beim Freigeben der Surface verwendet |
|} | |} | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | Eine SDL_Surface | + | Eine '''SDL_Surface''' repräsentiert bis SDL-Version 2.0 eine Gebiet des 'graphischen' Speichers, Speicher in dem gezeichnet werden kann. |
− | |||
− | + | Ab Version 2.0 werden hierfür TSDL_Window und TSDL_Texture benutzt. | |
− | + | Der Video Framebuffer wird als '''SDL_Surface''' von [[SDL_SetVideoMode]] und [[SDL_GetVideoSurface]] zurückgegeben. | |
− | |||
− | + | Die Felder ''w'' und ''h'' sind Werte die die Breite und Höhe der Surface in Pixeln wiedergeben. | |
− | Das ''flags'' | + | Das Feld ''pixels'' ist ein Pointer auf die aktuelle Pixeldaten. |
+ | Siehe [[SDL_PixelFormat#Beispiel|SDL_PixelFormat]]. | ||
+ | |||
+ | Das Feld ''clip_rect'' ist das clipping rectangle wie es in [[SDL_SetClipRect]] gesetzt wurde. | ||
+ | |||
+ | Das Feld ''flags'' unterstütz die folgenden per '''or''' verknüpften Werte: | ||
{| border="1" rules="all" | {| border="1" rules="all" | ||
!SDL_SWSURFACE | !SDL_SWSURFACE | ||
− | |Surface | + | |Das Surface wird im Systemspeicher gespeichert |
|- | |- | ||
!SDL_HWSURFACE | !SDL_HWSURFACE | ||
− | |Surface | + | |Das Surface wird im Grafikspeicher gespeichert |
|- | |- | ||
!SDL_ASYNCBLIT | !SDL_ASYNCBLIT | ||
− | |Surface | + | |Das Surface benutzt asynchrone [[blit]]s, wenn möglich |
|- | |- | ||
!SDL_ANYFORMAT | !SDL_ANYFORMAT | ||
− | | | + | |Erlaub jegliche Pixelformate (Display Surface) |
|- | |- | ||
!SDL_HWPALETTE | !SDL_HWPALETTE | ||
− | |Surface | + | |Das Surface hat eine exklusive Palette |
|- | |- | ||
!SDL_DOUBLEBUF | !SDL_DOUBLEBUF | ||
− | |Surface | + | |Das Surface ist doublebuffered (Display Surface) |
|- | |- | ||
!SDL_FULLSCREEN | !SDL_FULLSCREEN | ||
− | |Surface | + | |Das Surface nutzt eine Vollbildanzeige (Display Surface) |
+ | |- | ||
+ | !SDL_NOFRAME | ||
+ | |Das Fenster hat deine Titelleiste oder Framedekoration. Bei '''SDL_FULLSCREEN''' ist es automatisch gesetzt. | ||
|- | |- | ||
!SDL_OPENGL | !SDL_OPENGL | ||
− | |Surface | + | |Das Surface hat einen OpenGL-Kontext (Display Surface) |
|- | |- | ||
!SDL_OPENGLBLIT | !SDL_OPENGLBLIT | ||
− | |Surface | + | |Das Surface unterstützt OpenGL blitting (Display Surface). HINWEIS: Dieses Flag wird aus Kompatibilitätsgründen weitergeführt und wird nicht für neuen Quelltext empfohlen. |
|- | |- | ||
!SDL_RESIZABLE | !SDL_RESIZABLE | ||
− | |Surface | + | |Das Surface kann in seiner Größe verändert werden (Display Surface) |
|- | |- | ||
!SDL_HWACCEL | !SDL_HWACCEL | ||
− | |Surface blit | + | |Das Surface blit benutzt Hardwarebeschleunigung |
|- | |- | ||
!SDL_SRCCOLORKEY | !SDL_SRCCOLORKEY | ||
− | |Surface | + | |Surface benutzt colorkey blitting |
|- | |- | ||
!SDL_RLEACCEL | !SDL_RLEACCEL | ||
− | |Colorkey blitting | + | |Colorkey blitting wird durch RLE beschleunigt |
|- | |- | ||
!SDL_SRCALPHA | !SDL_SRCALPHA | ||
− | |Surface blit | + | |Surface blit benutzt Alpha-Blending |
|- | |- | ||
!SDL_PREALLOC | !SDL_PREALLOC | ||
− | |Surface | + | |Das Surface benutzt bereitgestellten Speicher |
|} | |} | ||
− | |||
== Hinweise == | == Hinweise == | ||
− | Um auf die Pixeldaten zuzugreifen kann es nötig sein die Surface zu sperren (siehe [[SDL_LockSurface]] | + | Um auf die Pixeldaten zuzugreifen kann es nötig sein die Surface zu sperren (siehe [[SDL_LockSurface]]). |
''refcount'' gibt an wieviele Zeiger auf die Surface gesetzt wurden. | ''refcount'' gibt an wieviele Zeiger auf die Surface gesetzt wurden. | ||
Wenn dieser Wert 1 ist, wird die Surface mit [[SDL_FreeSurface]] freigegeben, andernfalls nur der Wert erniedrigt. | Wenn dieser Wert 1 ist, wird die Surface mit [[SDL_FreeSurface]] freigegeben, andernfalls nur der Wert erniedrigt. | ||
+ | '''SDL_RESIZABLE''': Unter Windows führt das Grössenverändern zum Verlust des OpenGL-Kontext. | ||
<br> | <br> | ||
+ | |||
== Siehe auch == | == Siehe auch == | ||
[[SDL_PixelFormat]] | [[SDL_PixelFormat]] | ||
[[Kategorie:SDL|Surface]] | [[Kategorie:SDL|Surface]] |
Aktuelle Version vom 7. September 2013, 11:00 Uhr
Inhaltsverzeichnis
SDL_Surface
Name
SDL_Surface - Struktur der graphischen Oberfläche
Delphi-Spezifikation
type TSDL_Surface=record flags : Uint32; //nur Lesezugriff format : PSDL_Pixelformat; //nur Lesezugriff w, h : Integer; //nur Lesezugriff pitch : Uint16; //nur Lesezugriff pixels : Pointer; //Lese- und Schreibzugriff clip_rect : SDL_Rect; //nur Lesezugriff refcount : Integer; //meistens nur Lesezugriff end;
//es existieren weitere private Felder die nicht aufgeführt sind
Parameter
flags | Gesetzte Flags |
---|---|
format | Pixelformat (siehe SDL_PixelFormat) |
w, h | Breite und Höhe der Surface |
pitch | Länge einer Surface-Scanline in Bytes |
clip_rect | Surface Clipping Rechteck |
refcount | Referenzzähler - wird beim Freigeben der Surface verwendet |
Beschreibung
Eine SDL_Surface repräsentiert bis SDL-Version 2.0 eine Gebiet des 'graphischen' Speichers, Speicher in dem gezeichnet werden kann.
Ab Version 2.0 werden hierfür TSDL_Window und TSDL_Texture benutzt.
Der Video Framebuffer wird als SDL_Surface von SDL_SetVideoMode und SDL_GetVideoSurface zurückgegeben.
Die Felder w und h sind Werte die die Breite und Höhe der Surface in Pixeln wiedergeben.
Das Feld pixels ist ein Pointer auf die aktuelle Pixeldaten. Siehe SDL_PixelFormat.
Das Feld clip_rect ist das clipping rectangle wie es in SDL_SetClipRect gesetzt wurde.
Das Feld flags unterstütz die folgenden per or verknüpften Werte:
SDL_SWSURFACE | Das Surface wird im Systemspeicher gespeichert |
---|---|
SDL_HWSURFACE | Das Surface wird im Grafikspeicher gespeichert |
SDL_ASYNCBLIT | Das Surface benutzt asynchrone blits, wenn möglich |
SDL_ANYFORMAT | Erlaub jegliche Pixelformate (Display Surface) |
SDL_HWPALETTE | Das Surface hat eine exklusive Palette |
SDL_DOUBLEBUF | Das Surface ist doublebuffered (Display Surface) |
SDL_FULLSCREEN | Das Surface nutzt eine Vollbildanzeige (Display Surface) |
SDL_NOFRAME | Das Fenster hat deine Titelleiste oder Framedekoration. Bei SDL_FULLSCREEN ist es automatisch gesetzt. |
SDL_OPENGL | Das Surface hat einen OpenGL-Kontext (Display Surface) |
SDL_OPENGLBLIT | Das Surface unterstützt OpenGL blitting (Display Surface). HINWEIS: Dieses Flag wird aus Kompatibilitätsgründen weitergeführt und wird nicht für neuen Quelltext empfohlen. |
SDL_RESIZABLE | Das Surface kann in seiner Größe verändert werden (Display Surface) |
SDL_HWACCEL | Das Surface blit benutzt Hardwarebeschleunigung |
SDL_SRCCOLORKEY | Surface benutzt colorkey blitting |
SDL_RLEACCEL | Colorkey blitting wird durch RLE beschleunigt |
SDL_SRCALPHA | Surface blit benutzt Alpha-Blending |
SDL_PREALLOC | Das Surface benutzt bereitgestellten Speicher |
Hinweise
Um auf die Pixeldaten zuzugreifen kann es nötig sein die Surface zu sperren (siehe SDL_LockSurface).
refcount gibt an wieviele Zeiger auf die Surface gesetzt wurden. Wenn dieser Wert 1 ist, wird die Surface mit SDL_FreeSurface freigegeben, andernfalls nur der Wert erniedrigt.
SDL_RESIZABLE: Unter Windows führt das Grössenverändern zum Verlust des OpenGL-Kontext.