SDL CreateRGBSurface: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Fehlermeldungen)
(Versionskennzeichnung.)
 
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= SDL_CreateRGBSurface =
 
= SDL_CreateRGBSurface =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''SDL_CreateRGBSurface''' - Erstellt eine leere [[SDL_Surface]]
+
'''SDL_CreateRGBSurface''' - Erstellt eine leere [[SDL_Surface]]. Ab Version 1.0.
 
 
<br>
 
  
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
Zeile 11: Zeile 10:
 
                                     ''RMask'', ''GMask'', ''BMask'', ''AMask'': Uint32): PSDL_Surface
 
                                     ''RMask'', ''GMask'', ''BMask'', ''AMask'': Uint32): PSDL_Surface
  
<br>
+
 
 +
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 30: Zeile 30:
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== 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).
  
<br>
+
 
 +
 
 
== 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.
Zeile 44: Zeile 46:
 
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.
  
<br>
+
 
 +
 
  
 
== Rückgabewert ==
 
== Rückgabewert ==
 
'''SDL_CreateRGBSurface''' gibt '''nil''' zurück, wenn ein Fehler aufgetreten ist.  
 
'''SDL_CreateRGBSurface''' gibt '''nil''' zurück, wenn ein Fehler aufgetreten ist.  
  
<br>
+
 
 +
 
  
 
== 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 79: Zeile 83:
 
     writeln('CreateRGBSurface fehlgeschlagen');
 
     writeln('CreateRGBSurface fehlgeschlagen');
 
     exit;
 
     exit;
   end</pascal>
+
   end</source>
 +
 
 +
 
  
<br>
 
  
 
== Siehe auch ==
 
== Siehe auch ==

Aktuelle Version vom 7. September 2013, 11:00 Uhr

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