SDL CreateRGBSurface: Unterschied zwischen den Versionen
I0n0s (Diskussion | Beiträge) K (Kategorie verbessert) |
End (Diskussion | Beiträge) (Versionskennzeichnung.) |
||
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= SDL_CreateRGBSurface = | = SDL_CreateRGBSurface = | ||
− | |||
− | |||
− | |||
− | + | ||
+ | == Name == | ||
+ | '''SDL_CreateRGBSurface''' - Erstellt eine leere [[SDL_Surface]]. Ab Version 1.0. | ||
+ | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | function '''SDL_CreateRGBSurface'''(''flags'' : Uint32; ''width'', ''heigth'', '' | + | function '''SDL_CreateRGBSurface'''(''flags'' : Uint32; ''width'', ''heigth'', ''depth'': Integer; |
− | '' | + | ''RMask'', ''GMask'', ''BMask'', ''AMask'': Uint32): PSDL_Surface |
+ | |||
+ | |||
− | |||
== Parameter == | == Parameter == | ||
Zeile 21: | Zeile 22: | ||
| Grösse der Surface | | Grösse der Surface | ||
|- | |- | ||
− | ! '' | + | ! ''depth'' |
| Anzahl der Bits pro Pixel (siehe [[SDL_Surface]]) | | Anzahl der Bits pro Pixel (siehe [[SDL_Surface]]) | ||
|- | |- | ||
− | ! '' | + | ! ''RMask'', ''GMask'', ''BMask'', ''AMask'' |
| Benötigt für 24 und 32 Bit Surfaces. | | Benötigt für 24 und 32 Bit Surfaces. | ||
| Beschreibt im welchen 'Teil' des Pixels sich z.b. Rot befindet. | | Beschreibt im welchen 'Teil' des Pixels sich z.b. Rot befindet. | ||
|} | |} | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | Erstellt eine leere SDL_Surface im Speicher (darf erst nach [[SDL_SetVideoMode]] aufgerufen werden). | + | Erstellt eine leere [[SDL_Surface]] im Speicher (darf erst nach [[SDL_SetVideoMode]] aufgerufen werden). |
+ | |||
+ | |||
− | |||
== Hinweise == | == Hinweise == | ||
Wenn bitsPerPixel 8 ist, wird eine leere (Farb)Palette in [[SDL_PixelFormat]] benutzt, ansonsten wird ein 'packed-pixel' [[SDL_PixelFormat]] erstellt, da die [RGBA]Masken benutzt. | Wenn bitsPerPixel 8 ist, wird eine leere (Farb)Palette in [[SDL_PixelFormat]] benutzt, ansonsten wird ein 'packed-pixel' [[SDL_PixelFormat]] erstellt, da die [RGBA]Masken benutzt. | ||
<br> | <br> | ||
− | Wenn ein Alphakanal angeben ist (wenn Amask ungleich 0 ist), wird die SDL_SRCALPHA flag automatisch gesetzt. | + | Wenn ein Alphakanal angeben ist (wenn Amask ungleich 0 ist), wird die '''SDL_SRCALPHA''' flag automatisch gesetzt. |
Man kann sie mit Hilfe eines Aufrufes von [[SDL_SetAlpha]] nach der Surface-Erstellung entfernen. | Man kann sie mit Hilfe eines Aufrufes von [[SDL_SetAlpha]] nach der Surface-Erstellung entfernen. | ||
<br> | <br> | ||
− | Manchmal kann das Setzten der Alpha Maske komische Ergebnisse verursachen. Dies kann man umgehen indem man den Amask Parameter auf 0 setzt, aber die SDL_SRCALPHA flag setzt und danach [[SDL_SetAlpha]] mit dem SDL_SRCALPHA flag benutzt. | + | Manchmal kann das Setzten der Alpha Maske komische Ergebnisse verursachen. Dies kann man umgehen indem man den Amask Parameter auf 0 setzt, aber die '''SDL_SRCALPHA''' flag setzt und danach [[SDL_SetAlpha]] mit dem '''SDL_SRCALPHA''' flag benutzt. |
+ | |||
+ | |||
+ | |||
+ | |||
+ | == Rückgabewert == | ||
+ | '''SDL_CreateRGBSurface''' gibt '''nil''' zurück, wenn ein Fehler aufgetreten ist. | ||
− | |||
− | |||
− | |||
− | |||
== Beispiel == | == Beispiel == | ||
− | <pascal>//Erstellen einer 32-Bit surface wie OpenGL sie für Texturen erwartet | + | <source lang="pascal">//Erstellen einer 32-Bit surface wie OpenGL sie für Texturen erwartet |
var | var | ||
surface: PSDL_Surface; | surface: PSDL_Surface; | ||
Zeile 78: | Zeile 83: | ||
writeln('CreateRGBSurface fehlgeschlagen'); | writeln('CreateRGBSurface fehlgeschlagen'); | ||
exit; | exit; | ||
− | end</ | + | end</source> |
+ | |||
+ | |||
− | |||
== Siehe auch == | == Siehe auch == |
Aktuelle Version vom 7. September 2013, 11:00 Uhr
Inhaltsverzeichnis
SDL_CreateRGBSurface
Name
SDL_CreateRGBSurface - Erstellt eine leere SDL_Surface. Ab Version 1.0.
Delphi-Spezifikation
function SDL_CreateRGBSurface(flags : Uint32; width, heigth, depth: Integer; RMask, GMask, BMask, AMask: Uint32): PSDL_Surface
Parameter
flags | Zu setzende Flags | |
---|---|---|
width, heigth | Grösse der Surface | |
depth | Anzahl der Bits pro Pixel (siehe SDL_Surface) | |
RMask, GMask, BMask, AMask | Benötigt für 24 und 32 Bit Surfaces. | Beschreibt im welchen 'Teil' des Pixels sich z.b. Rot befindet. |
Beschreibung
Erstellt eine leere SDL_Surface im Speicher (darf erst nach SDL_SetVideoMode aufgerufen werden).
Hinweise
Wenn bitsPerPixel 8 ist, wird eine leere (Farb)Palette in SDL_PixelFormat benutzt, ansonsten wird ein 'packed-pixel' SDL_PixelFormat erstellt, da die [RGBA]Masken benutzt.
Wenn ein Alphakanal angeben ist (wenn Amask ungleich 0 ist), wird die SDL_SRCALPHA flag automatisch gesetzt.
Man kann sie mit Hilfe eines Aufrufes von SDL_SetAlpha nach der Surface-Erstellung entfernen.
Manchmal kann das Setzten der Alpha Maske komische Ergebnisse verursachen. Dies kann man umgehen indem man den Amask Parameter auf 0 setzt, aber die SDL_SRCALPHA flag setzt und danach SDL_SetAlpha mit dem SDL_SRCALPHA flag benutzt.
Rückgabewert
SDL_CreateRGBSurface gibt nil zurück, wenn ein Fehler aufgetreten ist.
Beispiel
//Erstellen einer 32-Bit surface wie OpenGL sie für Texturen erwartet
var
surface: PSDL_Surface;
rmask, gmask, bmask, amask: Uint32;
//SDL interpretiert jeden Pixel als 32-Bit Wert.
//deshalb muss unsere Maske auf der Byte Ordnung des Computers basieren
if SDL_BYTEORDER = SDL_BIG_ENDIAN then
begin
rmask:=$ff000000;
gmask:=$00ff0000;
bmask:=$0000ff00;
amask:=$000000ff;
end
else
begin
rmask:=$000000ff;
gmask:=$0000ff00;
bmask:=$00ff0000;
amask:=$ff000000;
end;
surface:=SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32,rmask, gmask, bmask, amask);
if (surface=nil) then
begin
writeln('CreateRGBSurface fehlgeschlagen');
exit;
end
Siehe auch
SDL_CreateRGBSurfaceFrom, SDL_FreeSurface, SDL_SetVideoMode, SDL_LockSurface, SDL_PixelFormat, SDL_Surface, SDL_SetAlpha, SDL_SetColorKey