easySDL: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K
K (Der Ausdruck ''<pascal>(.*?)</pascal>'' wurde ersetzt mit ''<source lang="pascal">$1</source>''.)
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig}}
 
Phobeus: Kurze übersicht über easySDL und seiner Funktionalität geben. Dies ist mehr als ein Stub anzusehen.
 
 
 
= Wichtiger Hinweis =
 
= Wichtiger Hinweis =
  
EasySDL befindet sich aktuell noch in einem sehr frühen experimentellen Status und kann daher an einigen Stellen noch massiv verändert werden. Bitte behaltet dies im Hinterkopf, wenn Ihr eine Software mit easySDL entwickelt. Für etwaige Fragen oder Anpassungsschwierigkeiten neuerer Versionen könnt ihr das Forum unter [http://www.delphigl.com/forum/viewforum.php?f=2 OpenGL] verwenden.
+
easySDL befindet sich aktuell noch in der Entwicklung und kann sich an einigen Stellen ändern. Bitte behaltet dies im Hinterkopf, wenn Ihr eine Software mit easySDL entwickelt. Für etwaige Fragen oder Anpassungsschwierigkeiten neuerer Versionen könnt ihr das Forum unter [http://www.delphigl.com/forum/viewforum.php?f=2 OpenGL] verwenden.
 
 
  
 
= Was ist easySDL? =
 
= Was ist easySDL? =
  
EasySDL ist ein von DGL genormtes Framework, dass dazu dienen soll innerhalb kurzer Zeit einen Prototypen zu entwickeln oder möglichst einfach Source Code für ein Tutorial oder Sample zur Verfügung zu stellen. Es richtet sich nicht an Entwickler, die ein komplettes Projekt entwickeln wollen. Die Funktionen sind darauf ausgelegt, dass man mit wenig Aufwand schnell eine funktionierende Anwendung erhält ohne das die Anwendung aufgebläht wirkt. Es ist nicht das Ziel, dass easySDL ein komplettes Framework wird, dass für jedes Problem eine Lösung anbietet.
+
easySDL ist ein von DGL genormtes Framework, dass dazu dienen soll innerhalb kurzer Zeit einen Prototypen zu entwickeln oder möglichst einfach Source Code für ein Tutorial oder Sample zur Verfügung zu stellen. Es richtet sich nicht an Entwickler, die ein komplettes Projekt entwickeln wollen. Die Funktionen sind darauf ausgelegt, dass man mit wenig Aufwand schnell eine funktionierende Anwendung erhält ohne das die Anwendung aufgebläht wirkt. Es ist nicht das Ziel, dass easySDL ein komplettes Framework wird, dass für jedes Problem eine Lösung anbietet.
  
Da easySDL auf SDL basiert ist es zudem eine einfache Möglichkeit seine Beispiele auf mehre Plattformen zum laufen zu kriegen. So ist eine für easySDL geschriebene Anwendung (sofern keine fremden Bibliotheken verwendet werden) sofort unter Windows, Linux und FreeBSD verwendbar. EasySDL und seine Abhängigkeiten werden mit der DGLSDK installiert.
+
Da easySDL auf SDL basiert ist es zudem eine einfache Möglichkeit seine Beispiele auf mehre Plattformen zum Laufen zu kriegen. So ist eine für easySDL geschriebene Anwendung (sofern keine fremden Bibliotheken verwendet werden) sofort unter Windows, Linux und FreeBSD verwendbar. easySDL und seine Abhängigkeiten werden mit der DGLSDK installiert.
  
  
Zeile 22: Zeile 18:
 
'''easySDLTextures.pas'''
 
'''easySDLTextures.pas'''
  
Ein Texturemanager mit dessen Hilfe von wenigen Zeile eine Textur laden kann. Die Ansteuerung der Textur erfolgt über die gewohnt ID oder einem vergebenen Namen.
+
Ein Texturemanager mit dessen Hilfe man mit wenigen Zeile Code eine Textur laden kann. Die Ansteuerung der Textur erfolgt über die gewohnte ID oder einem vergebenen Namen.
  
  
 
'''easySDLFont.pas'''
 
'''easySDLFont.pas'''
  
Ein Schriftenmanager der zum leichten Erstellen und Ausgeben von [[Text_ausgeben#Schrift_aus_Texturen|Texturfonts]] aus einer TTF-Datei erstellt wurde.
+
Ein Schriftenmanager der zum leichten Erstellen und Ausgeben von [[Text_ausgeben#Schrift_aus_Texturen|Texturfonts]], die aus einer TTF-Datei geladen werden, erstellt wurde.
 
 
  
 
= Funktionsweise =
 
= Funktionsweise =
Zeile 35: Zeile 30:
 
== Fenster initalisieren ==
 
== Fenster initalisieren ==
  
<pascal>program easySDLSample;
+
<source lang="pascal">program easySDLSample;
  
 
uses  
 
uses  
Zeile 67: Zeile 62:
 
begin
 
begin
 
   //Erstellt die Programstrukturen.
 
   //Erstellt die Programstrukturen.
   MyProgram := TMyProgram.Create('www.delphigl.com .:. easySDL');
+
   MyProgram := TMyProgram.Create;
  //Initialisiert SDL und OpenGL.
+
  MyProgram.WindowCaption := 'www.delphigl.com .:. easySDL';
  //!Erst nach dem Aufruf von Start sind die OpenGL-Funktionen verfügbar!
 
  MyProgram.Start;
 
  
 
   //Geht in den Mainloop, diese wird erst verlassen wenn Done auf -1 gesetzt wird.
 
   //Geht in den Mainloop, diese wird erst verlassen wenn Done auf -1 gesetzt wird.
 
   //Standartmässig geschieht dies nach Tastendruck von ESC oder beim Empfang des Quit-Signals.
 
   //Standartmässig geschieht dies nach Tastendruck von ESC oder beim Empfang des Quit-Signals.
 
   MyProgram.Loop;
 
   MyProgram.Loop;
  //Gibt die vom Program genutzen Ressourcen frei.
 
  MyProgram.Stop;
 
 
end.
 
end.
</pascal>
+
</source>
  
  
 
== Eingaben verarbeiten ==
 
== Eingaben verarbeiten ==
<pascal>// Bearbeitung der Events
+
<source lang="pascal">// Bearbeitung der Events
 
procedure TMyProgram.handleKey(keysym: TSDL_keysym);
 
procedure TMyProgram.handleKey(keysym: TSDL_keysym);
 
begin
 
begin
Zeile 95: Zeile 86:
 
   if KeyDown(SDLK_D) then moveRight;
 
   if KeyDown(SDLK_D) then moveRight;
 
   if MouseDownOnce(SDL_BUTTON_LEFT) then doAction;
 
   if MouseDownOnce(SDL_BUTTON_LEFT) then doAction;
end;</pascal>
+
end;</source>
  
  
 
== Texturen benutzten ==
 
== Texturen benutzten ==
<pascal>uses easySDLTextures;
+
<source lang="pascal">uses easySDLTextures;
  
 
begin
 
begin
 
   //Laden der Textur:
 
   //Laden der Textur:
   if textures.load('fire.tga','fire')=0 then writeln('Laden der Textur fehlgeschlagen');
+
   if textures.load('fire.tga','fire') = 0 then
 +
    writeln('Laden der Textur fehlgeschlagen');
 
   //Verwenden der Textur:
 
   //Verwenden der Textur:
 
   textures.bind('fire');
 
   textures.bind('fire');
end;</pascal>
+
end;</source>
  
  
 
== Schriften verwenden ==
 
== Schriften verwenden ==
<pascal>uses easySDLFont;
+
<source lang="pascal">uses easySDLFont;
  
 
var Font: TFont;
 
var Font: TFont;
Zeile 126: Zeile 118:
 
     //wechseln in den Orthomodus
 
     //wechseln in den Orthomodus
 
   Font.Draw('wiki.delphigl.com/index.php/easySDL', x-pos, y-pos);
 
   Font.Draw('wiki.delphigl.com/index.php/easySDL', x-pos, y-pos);
end;</pascal>
+
end;</source>
  
  
Zeile 133: Zeile 125:
 
:<u>'''F :''' Darf ich easySDL verwenden?</u>
 
:<u>'''F :''' Darf ich easySDL verwenden?</u>
  
:Was für eine Frage! Das Framework wurde von DGL-Mitgliedern für DGL-Mitglieder entwickelt und ist definitiv dafür gedacht worden, verwendet zu werden. EasySDL untersteht der üblichen DGL-Lizenz und darf daher frei (auch in geschlossenen Projekten) verwendet werden, solange der Header innerhalb des Quellcodes erhalten bleibt. Wir bitten jedoch darum, dass Verbesserungen den Autoren mitgeteilt werden, damit diese in künftige Versionen von easySDL einfließen können. Sehr freuen wir uns natürlich auch über die Nennung von DGL in den Credits ;)
+
:Was für eine Frage! Das Framework wurde von DGL-Mitgliedern für DGL-Mitglieder entwickelt und ist definitiv dafür gedacht worden, verwendet zu werden. easySDL untersteht der üblichen DGL-Lizenz und darf daher frei (auch in geschlossenen Projekten) verwendet werden, solange der Header innerhalb des Quellcodes erhalten bleibt. Wir bitten jedoch darum, dass Verbesserungen den Autoren mitgeteilt werden, damit diese in künftige Versionen von easySDL einfließen können. Sehr freuen wir uns natürlich auch über die Nennung von DGL in den Credits ;)
  
  
 
:<u>'''F :''' Ersetzt easySDL SDL? </u>
 
:<u>'''F :''' Ersetzt easySDL SDL? </u>
  
:Ein klares Nein! EasySDL baut auf SDL auf und kapselt dessen Funktionalität in Form einiger Klassen. SDL ist daher absolut notwendig um Anwendungen, die mit easySDL geschrieben wurden, zum Laufen zu bekommen.
+
:Ein klares Nein! easySDL baut auf SDL auf und kapselt dessen Funktionalität in Form einiger Klassen. SDL ist daher absolut notwendig um Anwendungen, die mit easySDL geschrieben wurden, zum Laufen zu bekommen.
  
  

Aktuelle Version vom 10. März 2009, 19:17 Uhr

Wichtiger Hinweis

easySDL befindet sich aktuell noch in der Entwicklung und kann sich an einigen Stellen ändern. Bitte behaltet dies im Hinterkopf, wenn Ihr eine Software mit easySDL entwickelt. Für etwaige Fragen oder Anpassungsschwierigkeiten neuerer Versionen könnt ihr das Forum unter OpenGL verwenden.

Was ist easySDL?

easySDL ist ein von DGL genormtes Framework, dass dazu dienen soll innerhalb kurzer Zeit einen Prototypen zu entwickeln oder möglichst einfach Source Code für ein Tutorial oder Sample zur Verfügung zu stellen. Es richtet sich nicht an Entwickler, die ein komplettes Projekt entwickeln wollen. Die Funktionen sind darauf ausgelegt, dass man mit wenig Aufwand schnell eine funktionierende Anwendung erhält ohne das die Anwendung aufgebläht wirkt. Es ist nicht das Ziel, dass easySDL ein komplettes Framework wird, dass für jedes Problem eine Lösung anbietet.

Da easySDL auf SDL basiert ist es zudem eine einfache Möglichkeit seine Beispiele auf mehre Plattformen zum Laufen zu kriegen. So ist eine für easySDL geschriebene Anwendung (sofern keine fremden Bibliotheken verwendet werden) sofort unter Windows, Linux und FreeBSD verwendbar. easySDL und seine Abhängigkeiten werden mit der DGLSDK installiert.


Module

easySDL.pas

Enthält das Grundsystem für easySDL zum Initalisieren von Fenstern, der Verarbeitung von Events, sowie der grundlegenden Steuerung mit Tastatur und Maus.


easySDLTextures.pas

Ein Texturemanager mit dessen Hilfe man mit wenigen Zeile Code eine Textur laden kann. Die Ansteuerung der Textur erfolgt über die gewohnte ID oder einem vergebenen Namen.


easySDLFont.pas

Ein Schriftenmanager der zum leichten Erstellen und Ausgeben von Texturfonts, die aus einer TTF-Datei geladen werden, erstellt wurde.

Funktionsweise

Fenster initalisieren

program easySDLSample;

uses 
  dglOpenGL,

  SDL,
  easySDL;

type
  TMyProgram = class(TEasySDL)
    procedure DrawScene; override;
  end;

var
  MyProgram: TMyProgram;

procedure TMyProgram.DrawScene;
begin
  glClear( GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT );

  glLoadIdentity;
  glTranslatef(0, 0,-6); 

  glBegin(GL_TRIANGLES);
      glColor3f(1,0,0); glVertex3f(-1.0,-1.0, 0.0);
      glColor3f(0,0,1); glVertex3f(1.0,-1.0, 0.0);
      glColor3f(0,1,0); glVertex3f(0.0, 1.0, 0.0);
  glEnd();
end;

begin
  //Erstellt die Programstrukturen.
  MyProgram := TMyProgram.Create;
  MyProgram.WindowCaption := 'www.delphigl.com .:. easySDL';

  //Geht in den Mainloop, diese wird erst verlassen wenn Done auf -1 gesetzt wird.
  //Standartmässig geschieht dies nach Tastendruck von ESC oder beim Empfang des Quit-Signals.
  MyProgram.Loop;
end.


Eingaben verarbeiten

// Bearbeitung der Events
procedure TMyProgram.handleKey(keysym: TSDL_keysym);
begin
  case keysym.sym of
    SDLK_F1 : done := -1;
  end;
end;

// Abfragen bei der Berechnung
procedure TMyProgramm.UpdateWorld(Seconds:TGLFloat);
begin
   if KeyDown(SDLK_D) then moveRight;
   if MouseDownOnce(SDL_BUTTON_LEFT) then doAction;
end;


Texturen benutzten

uses easySDLTextures;

begin
  //Laden der Textur:
  if textures.load('fire.tga','fire') = 0 then
    writeln('Laden der Textur fehlgeschlagen');
  //Verwenden der Textur:
  textures.bind('fire');
end;


Schriften verwenden

uses easySDLFont;

var Font: TFont;
    Color: TSDL_Color;
begin
  //weisse Farbe
  Color.r := 255;
  Color.b := 255;
  Color.g := 255;

  //Erstellen der Schrift:
  Font := TFont.Create('font.ttf', 24, Color, TTF_STYLE_NORMAL); //TTF_STYLE_NORMAL=0 ;)

  //Zeichen der Schrift:
    //wechseln in den Orthomodus
  Font.Draw('wiki.delphigl.com/index.php/easySDL', x-pos, y-pos);
end;


FAQ

F : Darf ich easySDL verwenden?
Was für eine Frage! Das Framework wurde von DGL-Mitgliedern für DGL-Mitglieder entwickelt und ist definitiv dafür gedacht worden, verwendet zu werden. easySDL untersteht der üblichen DGL-Lizenz und darf daher frei (auch in geschlossenen Projekten) verwendet werden, solange der Header innerhalb des Quellcodes erhalten bleibt. Wir bitten jedoch darum, dass Verbesserungen den Autoren mitgeteilt werden, damit diese in künftige Versionen von easySDL einfließen können. Sehr freuen wir uns natürlich auch über die Nennung von DGL in den Credits ;)


F : Ersetzt easySDL SDL?
Ein klares Nein! easySDL baut auf SDL auf und kapselt dessen Funktionalität in Form einiger Klassen. SDL ist daher absolut notwendig um Anwendungen, die mit easySDL geschrieben wurden, zum Laufen zu bekommen.


Maintainer