You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
6.1 KiB
HTML

<!menue>
<h2>Grafik Buffer allgemein</h2>
Grafikbuffer werden über einen 32-BIT Integer, die <wT>llgfx_id verwaltet. Nachdem ein Grafikbuffer erzeugt ist kann jede Grafikfunktion den Buffer als Quelle oder als Ziel einsetzen.
Die Grafikengine verwaltet alle Grafiken als Grafikbuffer, auch der Bildschirm Backbuffer ist ein normaler Grafikbuffer der als Ziel oder Quelle für Blitteroperation und dergleichen verwendet werden kann.
Grafikbuffer werden automatisch an die Bildschirm Bittiefe angepasst. Das passiert auch automatisch nach jedem Displaymode Wechsel wie z.b. durch llgfx_ToggleFullScreen() oder durch explizites neusetzen des Displaymodus.
<!h2a=llgfx_CreateGfx,Neuen Grafikbuffer erzeugen,llgfx_CreateGfx>
<§t=<wT>llgfx_id <wF>llgfx_CreateGfx( <wT>int <wV>width, <wT>int <wV>height, <wT>const <wT>char* <wV>name=0 );§>
Den Grafikbuffer mit llgfx_ReleaseGfx() wieder freigeben.
Neben breite (width) und höhe (height) kann auch optional ein Name für den Grafikbuffer angegeben werden.
Für normale temporäre Grafikbuffer hat der Parameter NAME keine Bedeutung.
Einen Namen zu vergeben hat dann Sinn, wenn man eine Grafik die von Disk nachgeladen werden soll, bereits im Speicher vorher anlegen will. Ein Ladebefehl nimmt, bevor auf eine Fileresource zugegriffen wird, immer den bereits im Speicher befindlichen Grafikbuffer mit dem selben Namen. Z.b.: Wird im Speicher eine Grafik erzeugt mit dem Namen "map.png", dann liefert ein folgender Ladebefehl llgfx_LoadGfx("map.png"), die bereis im Speicher befindliche Grafik ohne nachzuladen.
<!h2a=Default Grafikbuffer,Default Grafikbuffer,DefaultGfxBuffer</h2>
<§t= Default Grafikbuffer werden automatisch mit llgfx_SetDisplayMode() erzeugt. §>
SetDisplayMode erzeugt 4 fixe Buffer in der Größe des Displaymodes an.
<!ul=
gfxbuffer <wD>0 ... Backbuffer\
gfxbuffer <wD>1 ... Frontbuffer\
gfxbuffer <wD>2 ... Stretchbuffer FFA\
gfxbuffer <wD>3 ... Stretchbuffer FFA<br>\
gfxbuffer <wV>4 ... Erster Userbuffer z.b. durch <!link=gfxbuffer#llgfx_CreateGfx,llgfx_CreateGfx()>\
gfxbuffer <wV>5 ... Zweiter Userbuffer z.b. durch <!link=gfxbuffer#llgfx_LoadGfx,llgfx_LoadGfx()>
=ul>
<wS>Siehe <wS> <!link=gfxdisplay#llgfx_SetDisplayMode,llgfx_SetDisplayMode()>
Die Stretchbuffer werden von der Engine temporär für Zwischen-Blits verwendet bei ROTATE und STRETCH Blits.
Vom Userprogram aus können sie jederzeit verwendet werden, es sollten nur keine Grafiken dort verbleiben
wegen der Gefahr des Überschreibens.
<!h2a=llgfx_LoadGfx,Grafikresource laden,llgfx_LoadGfx>
Ladet eine Grafik und erstellt dafür einen Grafikbuffer. Der Buffer hat die Breite und Höhe der Grafik und wird auch mit einer Maske versehen falls die Grafik einen Alpha Kanal besitzt.
Unterstützte Formate sind Teiberabhängig. Alle Treiber unterstützen: <wD>PNG
Zum Konvertieren anderer Formate das Tool <wT>AsinDesigner verwenden.
<h3>Ladevorgang</h3>
Bevor eine Grafik geladen wird, überprüft die Engine ob die Grafik mit dem Filenamen bereits im Speicher ist. Beim laden wird der Filename zum Grafikbuffer intern mitgefühert, es passiert daher ein direkter Vergleich mit dem Filenamen.
Ist eine Grafik bereits im Speicher wird intern ein Referenz Zähler erhöht und die alte llgfx_id zurückgegeben.
Die Freigabe erfolgt mit <!link=gfxbuffer#llgfx_ReleaseGfx,llgfx_ReleaseGfx()>.
<h3>Parameter 1: Filename</h3>
filename = Pfad der zur ladenden Grafik. Filenamen können Verzeichnisnahmen enthalten. Der Suchpfad beginnt immer mit dem Verzeichnis in dem das Exe Programm liegt, auch wenn über einen link gestartet wird.
<pre>
| z.B: "/sprite1.png", Suchpfad -> [exedir]/sprite1.png
| "sprite1.png", Suchpfad -> [exedir]/[curdir]/sprite1.png
| "menu/sprite1.png", Suchpfad -> [exedir]/menu/sprite1.png
| "../sprite1.png", Suchpfad -> [exedir]/[curdir]/../sprite1.png
[exedir] = Verzeichnis aus dem das Game gestartet wurde
[curdir] = gesetzt mit llfile_SetCurDir(). ist per default leer
</pre>
Man kann das Game-Root Verzeichnis nicht verlassen. Mit <wF>llfile_SetCurDir() kann man den Suchpfad innerhalb des Root Verzeichnisses verstellen. Siehe dazu <wF>llfile() Funktionen.
<h3>Parameter 2: Optional LLGFX_COLORKEY flag</h3>
Ein COLORKEY flag setzt intern die Colorkeyfarbe automatisch auf die Farbe des linken oberen Pixels der Grafik. Ausserdem wird der Colorkey für den nächsten Blit Aufruf eingeschaltet.
Diese Flag soll Tipparbeit ersparen.
Alternativ kann eine Colorkey wie folgt gesetzt werden:
<!rtf=Colorkey_loadflag.rtf>
<h3>Parameter 2: Optional LLGFX_CACHE flag</h3>
Ein CACHE flag hat folgende Bedeutung: Grundsätzlich ist ein Fehlschlag beim Laden einer Grafik ein Fataler Fehler und führt zu einer MessageBox die anzeigt das eine angeforderte Resource nicht existiert. Wenn es sich aber um keinen Fehler handelt, sondern nur um einen Test ob die Grafik schon geladen wurde, kann man dieses Flag einsetzen. Das Flag bewirkt das eine llgfx_id zurückgegeben wird falls sich die Grafik im Speicher befindet und falls nicht wird einfach eine 0 ID zurückgegeben ohne Fehlerbehandlung.
<h3>Returnwert:</h3>
Liefert index des Grafikbuffers zurück.
Bei Fehler ist der Returnwert 0.
<!h2a=llgfx_CloneGfx,Klonen eines Buffers,llgfx_CloneGfx>
Clonegfx liefert ein Duplicat in einem eigenen Grafikbuffer. Der Inhalt vom Original Buffer ist kopiert.
<!xml=llgfx_CloneGfx,function.xsl>
<!h2a=llgfx_ReleaseGfx,Grafik freigeben,llgfx_ReleaseGfx>
Freigabe mit <wF>llgfx_ReleaseGfx(). Vermindert internen Referenzzähler. Wird dieser 0, dann wird die Grafik aus dem Speicher gelöscht.
<h3>ReleaseGfx per ID</h3>
<§t=<wT>void <wF>llgfx_ReleaseGfx( <wT>llgfx_id <wV>gfxid );§>
<h3>ReleaseGfx per Name</h3>
<§t=<wT>int <wF>llgfx_ReleaseGfx( <wT>const <wT>char* <wV>filename );§>
Return Wert ist 0 bei Erfolg (Grafik gefunden).
<!h2a=llgfx_DeleteGfx,Grafik zerstören,llgfx_DeleteGfx>
llgfx_DeleteGfx()Um eine Grafik zu entfernen, selbst wenn noch darauf Referenziert wird.
<!h2a=llgfx_AddRef,Grafik Referenz erhöhen,llgfx_AddRef>
Mit AddRef kann man den internen Referenz Zähler erhöhen. Diese Funktion wird benötigt wenn man ein Objekt dupliziert und eine llgfx_id von einem Grafikbuffer weiterreichen will.
<!xml=llgfx_AddRef,function.xsl>
<h2>Code Schnipsel</h2>
<!rtf=LoadGfx>