Autor Beitrag
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mo 30.05.05 09:38 
Ich habe folgenden Quelltext:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
unit Main_Unit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dglOpenGl;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure WM_Create(var Msg: TWMCreate); message WM_Create;
    procedure WM_ShowWindow(var Msg: TWMShowWindow); message WM_ShowWindow;
    procedure WM_Close(var Msg: TWMClose); message WM_Close;
  end;

var
  Form1: TForm1;
  h_DC: HDC;
  FRC: HGLRC;
  FInitialised: Boolean;

implementation

{$R *.dfm}

procedure TForm1.WM_Create(var Msg: TWMCreate);
begin
 Application.Title:='Schwimmvereinführer';
end;

procedure TForm1.WM_ShowWindow(var Msg: TWMShowWindow);
var
  PixelFormat: Integer;
  pfd: PIXELFORMATDESCRIPTOR;
  Error: Cardinal;
begin
 dglopengl.InitOpenGL();
 // Pixelformatdescription leeren
 ZeroMemory(@pfd, SizeOf(pfd));
 // pfd initialisieren
 pfd.nSize:=SizeOf(PIXELFORMATDESCRIPTOR); // Die Größe vom pfd
 pfd.nVersion:=1;                             // version
 pfd.dwFlags:=PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
 pfd.iPixelType:=PFD_TYPE_RGBA;                 // RGBA color format
 pfd.cColorBits:=32;                            // Farbtiefe
 pfd.cDepthBits:=16;                            // Tiefenbuffer
 h_DC:=GetDC(Handle);
 // richtiges Pixelformat suchen
 PixelFormat:=ChoosePixelFormat(h_DC, @pfd);
 if (PixelFormat = 0) then
  begin
   MessageBox(0, 'Unable to find a suitable pixel format', 'Error', MB_OK or MB_ICONERROR);
   Exit;
  end;
 DescribePixelFormat(h_DC, PixelFormat, SizeOf(pfd), pfd);
 // Pixelformat auf den DC zuweisen
 if (not SetPixelFormat(h_DC, PixelFormat, @pfd)) then
  begin
    MessageBox(0, 'Unable to set the pixel format', 'Error', MB_OK or MB_ICONERROR);
    Exit;
  end;
 // OpenGL Rendercontext setzen.
 FRC:=wglCreateContext(h_DC);
 if (FRC=0) then
  begin
   MessageBox(0, 'Unable to create an OpenGL rendering context', 'Error', MB_OK or MB_ICONERROR);
   Exit;
 end;
 // Den Rendercontext auswählen
 if (not wglMakeCurrent(h_DC, FRC)) then
  begin
   MessageBox(0, 'Unable to activate OpenGL rendering context', 'Error', MB_OK or MB_ICONERROR);
   Exit;
 end;
 ReadExtensions;
 ReadImplementationProperties;
 // Depth Test
 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
        glDepthFunc(GL_LEQUAL);
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_CULL_FACE);
  glDepthMask(True);
  glClearDepth(1);
  // Colors
  glColorMask(True, True, True, True);
  glClearColor(0, 0, 0, 1);
  // Wenn OpenGL die Normalen nicht von selber normalisiert, kann es sein,
  // dass das Licht auf den Oberflächen zu hell bzw. zu Dunkel wird
  glEnable(GL_NORMALIZE);

  glShadeModel(GL_SMOOTH);

  // Setting up Light

  glDisable(GL_LIGHTING);

  glEnable(GL_COLOR_MATERIAL);
  Error := glGetError;
  if Error<>0 then
   begin
    ShowMessage(gluErrorString(Error));
   end;
 FInitialised:=True;
// FormResize(Self);
end;

procedure TForm1.WM_Close(var Msg: TWMClose);
begin
 // Makes current rendering context not current, and releases the device
 // context that is used by the rendering context.
 if (not wglMakeCurrent(h_DC, 0)) then
  begin
   MessageBox(0, 'wglMakeCurrent failed to release DC!', 'Error', MB_OK or MB_ICONERROR)
  end;
 // Attempts to delete the rendering context
 if (FRC<>0) then
  begin
   if (not wglDeleteContext(FRC)) then
    begin
     MessageBox(0, 'Release of rendering context failed!', 'Error', MB_OK or MB_ICONERROR)
    end;
   FRC:=0;
  end;
 ReleaseDC(Handle, h_DC);
 h_DC:=0;
 FInitialised:=False
end;

end.


Nun habe ich das Problem, das er bei dem hervorgegebenen Teil mir immer abschmiert. Weiß einer woran das liegt?
Ich weiß nicht, ob er mit der dglOpenGl.pas ein Problem hat, da D2k5 PE beim einbeinden der Unti diese unterstreicht.
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Do 02.06.05 12:44 
Wenn ich jedoch noch

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TForm1.FormResize(Sender: TObject);
var
  VP: array[0..1] of Integer;
  Aspect: Single;
begin
 if (FInitialised) then
  begin
   // Set the viewport for the OpenGL window
   glGetIntegerv(GL_MAX_VIEWPORT_DIMS, @VP);
   // Dont make the Window to large
   // Viewport von OpenGL setzen
   glViewport(0, 0, Form1.ClientWidth, Form1.ClientHeight);
   // Seitenverhötniss berechnen.
   Aspect := ClientWidth / ClientHeight;
   // Projection matrix
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   // Perspektive setzen
   gluPerspective(45.0, Aspect, 0.1, 128.0);
   // Modelview Matrix
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity;
   Form1.FormPaint(Self);
 end
end;


einfüge und diese im OnShow-Ereignis noch aufrufe erhalte ich keine Fehlermeldung mehr beim beenden des Programms.
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Do 02.06.05 14:16 
Stimmt. Jetzt wo du es sagst. Das hat oben natürlich gefehlt. Allerdings wundert mich der Fehler dennoch ein bisschen. Aber es kann sein, dass so nicht alles richtig initialisiert wurde, da du ja keinen ViewPort etc. gestzt hast. Also in deinem Treiber. Evtl hat der dann bei dir den Fehler proviziert. Normal sollte das aber eigentlich nicht der Fall sein, da es ja eigentlich alles richtig initialisiert wurde. Mit anderen Worten. Ich auch keine genaue Ahnung warum das dafür sorgt, dass der Fehler nicht mehr auftritt und versuche gerade etwas an den Haaren herbei zu ziehen. Aber normal gehört das eigtnlich zu jeder Initialisierung dazu.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Do 02.06.05 18:53 
Eine wirklich gute Idee habe ich auch nicht. ==> muss etwas verdammt blödes sein ;)
Um auf jeden Fall weitere Fehler auszuschließen würde ich Dir einmal empfehlen einen der Template für die 1.5 OpenGL von unserer Seite zu laden. Sollte der Fehler dort auch auftreten (würde es mich sehr wundern), ansonsten kann man vielleicht versuchen einen etwaigen Unterschied zu finden.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Do 02.06.05 19:03 
Das ist eigentlich das Grundgerüst von Lossy eX, falls ich nicht etwas vergessen hatte etwas zu übernehmen.
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 03.06.05 07:27 
Na ja das OnResize muss eigentlich immer mit dabei sein. Und bevor man etwas sehen kann muss man OpenGL auch erste einmal sagen wie er es darstellen soll. Allerdings tippe ich in mal darauf, dass dein Grafikkartentreiber dort ein wenig empfindlicher zu seihen scheint und den OpenGL Rendercontex erst dann richtig erstellt, wenn auch eine Größe eingestellt wurde. Das ist aber nur eine Vermutung. Konnte ich hier auf ner ATI nicht reproduzieren. Allerdings ist hier auch kein offizieller Treiber drauf. Genau kann ich das aber nicht sagen.

Da das OnResize (oder zu mindest das Einstellen des ViewPort) normal immer mit erfolgen muss denke ich mal, dass man das ja auch vernachlässigen kann. Jetzt wo es ja anscheinend geht.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 03.06.05 08:39 
user profile iconLossy eX hat folgendes geschrieben:
Na ja das OnResize muss eigentlich immer mit dabei sein.

Wenn man aber den Borderstyle auf bsNone ändert, wird das Ereignis allerdings nicht aufgerufen. War zu mindestens bei einer meiner Projekte so.

user profile iconLossy eX hat folgendes geschrieben:
Allerdings tippe ich in mal darauf, dass dein Grafikkartentreiber dort ein wenig empfindlicher zu seihen scheint und den OpenGL Rendercontex erst dann richtig erstellt, wenn auch eine Größe eingestellt wurde. Das ist aber nur eine Vermutung.

Ich glaube auch eher das es nur eine Vermutung ist. Denn die Grafikkarte ist eigentlich so ziemlich Fehlertolerant im Gegensatz zu den meisten anderen. Sonst wäre mir bei dem Projekt hier eher aufgefallen. Bei dem Projekt dachte ich ja das es nur ein Fehler des alten Rechner in der Darstellung ist und kein Quelltextfehler, da auf dem neuen Rechner der Fehler nicht war.
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 03.06.05 10:56 
user profile iconHeiko hat folgendes geschrieben:
Wenn man aber den Borderstyle auf bsNone ändert, wird das Ereignis allerdings nicht aufgerufen. War zu mindestens bei einer meiner Projekte so.

Wann machst du denn das? Das Borderstyle ist mit äußerster Vorsicht zu genießen. Sobald du den Borderstyle änderst wird das Fenster komplett neu erzeugt und bekommt somit uch einen Satz neuer Handles. Entsprechend ist auch der alte DC ungültig, da er unmittelbar am Fensterhandle hängt. Und wenn du dann versucht den RC bei einem DC zu löschen welcher nicht mehr existiert kann es nur krachen.

Also sobald du den Borderstyle änderst solltest du alles OpenGL haftige frei geben und hinterher wieder initialisieren. Zum Beispiel wenn du zur Laufzeit in den Vollbildmodus wechselst.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 03.06.05 11:35 
Das mache ich normalerweise bevor ich OpenGl initializiere. Teilweise schon im Objektinspektor.
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Fr 03.06.05 11:43 
Zumal Du Dich stets fragen solltest "Wofür brauche ich ein Fenster?" Was ich nun sage, werden andere Leute sicherlich anderes sehen, aber... VCL würde ich immer nur dann verwenden, wenn ich auch die anderen Komponenten irgendwie brauche. Also einen Knopf mit Eingabefeldern und nur ein bestimmter Bereich, der für die Darstellung mit OpenGL verwendet werden soll. Z.B. ein Editor oder eine kleine Simulation wären für mich klassische Einsatzbereiche für eine VCL-Applikation. Sobald ich allerdings den BorderStyle verändere um in den Vollbildmodus zu wechseln, so würde ich nicht zur VCL greifen. Die Einsatzfelder für solche Szenarien sind ja meist Spiele und evtl. Videoplayer oder etwas in der Richtung. In diesem Fall würde ich tendenziell eher zu so etwas wie SDL greifen.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 03.06.05 12:52 
Mein Problem momentan ist noch, das ich mich noch nicht so richtig mit nonVCL beschäftigt habe und mit SDL überhaupt noch nicht.
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Fr 03.06.05 13:29 
Solltest Du primär Vollbild verwenden, wir es sich sicherlich lohnen einen Blick drauf zu werfen. Du findest bei DGL ein SDL-Template und kannst ja einmal einen Blick drüber werfen. Wer schon einmal sich via WinAPI ein Fenster erzeugt hat, wird sicherlich kaum Verständnisprobleme damit haben und sich relativ schnell einfinden.
Ansonsten würde ich es ähnlich wie Lossy angehen. Wenn es nun läuft, ist es evtl. ein Fall für die X-Akten. Evtl. einmal einen Rechner mit einer Konkurrenz-Karte ausprobieren evtl. liegt es in der Treiberinterna (Viewport ist 0, Division bei Zero z.B.). Ansonsten sollte das Fenster stets auf ein Resize reagieren um den Viewport neu auszurichten und dessen neue Dimension zu ermittelnt (z.B. für 2D-Zeichnungen oder Selektion) oder zumindest ein eben solchen Vorgang zu verhindern.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 03.06.05 13:40 
Mit SDL wollte ich mich sowieso mal beschäftigen (und das schon seit fast einem Jahr). Jetzt wo ich seit 3 Monaten Internet habe ist auch die Wahrscheinlichkeit größer, das ich es mir mal durchlese. Den Artikel in der Community hatte ich schon gesehen, aber nicht durchgelesen :wink: . Ich werde ihn mir mal vorknöpfen. Läuft das Programm eigentlich schneller wenn ich es mit SDL mache statt mit VCL?
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Fr 03.06.05 13:56 
Einen Artikel? ... oh, ach ja, den gibt es auch noch ;) Halt auf jeden Fall den Source Code des Templates daneben. Das macht dann hoffentlich beides zu verstehen einfacher ;)
Und was einen Geschwindigkeitsvorteil angeht. Ich kann es Dir nicht sagen, allerdings kann ich Dir sagen, dass Du diesen absolut vernachlässigen kannst ;) Im Prinzip macht VCL und SDL ja das gleiche. Es wird eine höhere Layer gebildet der es dann auf die WinAPI "wrappt". Denke daher, dass es sich sehr in der Wage halten wird. All diese Vorgänge sind bei heutigen CPUs absolut zu vernachlässigen, eine schlampige 3D-Programmierung würde ein vielfaches (1000x) an Leistung vernichten. Der Vorteil von SDL gegenüber VCL liegt primär in zwei Bereichen. SDL ist primär auf die Entwicklung von Spielen angelegt, ergo kennt man erstmal den Befehl zum Wechseln in den Vollbildmodus, muss man nicht erst in der MSDN nachschauen *g Zweitens ist SDL plattformunabhägig und solltest Du der Versuchung widerstehen können nicht irgendwelche Windows-Only-Techniken einzubinden (also SDL+OpenGL evtl. FMOD) so stehen die Chancen sehr gut, dass dein Programm auch mit Freepascal unter Linux lauffähig sein wird. Läuft deine Anwendung dann auch noch auf beiden Systemen robust stabil, kannst Dir auf die Schulter klopfen, dass wäre IMAO die Königsklasse der 3D-Entwicklung) ;)
Sinnvoll verwenden kann man beides. Sowohl Schaufel als auch Spaten eignen sich zum Graben, der Sparten vermutlich bei hartem Untergrund besser ;)

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 03.06.05 14:16 
OpenGL allerdings nur eingeschränkt unter einem anderen OS. Alle Befhele mit wgl vorne funzen dann ja nit mehr soweit ich weiß, da diese
windowsbasierend sind :wink: .
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Fr 03.06.05 14:48 
Falsch. Wie Du bereits festgestellt haben sind die wgl-Funktionen windowsbasierend. In der Linux (und Mac?)-Welt sprechen wir von den GLX-Funktionen. Mit all diesen hat man unter SDL jedoch nichts mehr zu tun. Man sagt SDL mehr oder Minder: "Ich will ein OpenGL-Fenster" und schon erhält man dieses von dem jeweils darunter liegenden System. Auch das windowstypische rumgehangel mit dem pfd und dc entfällt, da dies die WinAPI vorraussetzt. Statt eines Pixelformats werden halt entsprechende SDL-Funktionen aufgerufen:
ausblenden Quelltext
1:
2:
3:
4:
5:
SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );
  SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );
  SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );
  SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
  SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );

Wie sich SDL dann darum kümmert z.B. unter Windows den pfd zu erhalten, ist nicht mehr im Aufgabenfeld des Entwicklers. Man gibt quasi nur noch eine Wunschliste weiter ;)

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Fr 03.06.05 14:55 
Und muss SDL auf einem nonVCL-Berecih basieren? Also wo man selber dafür sorgewn muss, dass das Fenster sich nicht von alleine schließt und man sleber alle Messages abfangen muss? Und welche Unit muss ich für SDL einbinden?
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Fr 03.06.05 17:54 
So ganz verstehe ich deine Frage nicht. SDL initalisiert eigenständig ein Fenster. Dort dann eine VCL-Komponente zu setzen ist nicht machbar (zumindest weiß ich nicht wie, evtl. bekommt man auch irgendwie etwas an SDL übergeben, dass... aber damit wäre der Sinn des ganzen ja passe). SDL selbst funktioniert ähnlich wie eine WinAPI Anwendung. Du hast praktisch eine Endlosschleife im Programm laufen und fragst zwischenzeitlich die Nachrichten des Fensters ab. Findet ein Ereignis statt, mußt Du darauf reagieren. Das Ganze findet also quasi eine Ebene "tiefer" statt und muss entsprechend "hart" codiert werden. Ich denke allerdings, wenn man das Grundprinzip Begriffen hat, wird einem dies keinen Kummer bereiten. Zumal man sich (zumindest einbildet) die volle Kontrolle zu haben ;-)
Die Unit nennt sich SDL.pas. Diese ist nicht von Haus aus dabei, sondern kann von den JEDIs bezogen werden. www.delphi-jedi.org/Jedi:TEAM_SDL_HOME Alternativ bietet DGL einen Installer an, der Header, einige Loader und SDL auf deinem Rechner installiert und in die Suchpfade einträgt. (Homepage, rechts unten in der Versionsbox: DGLSDL 2005.1).
Würde man mich nach den Schatten von SDL fragen, so würde ich zwei Dinge erwähnen: 1. SDL muss auf dem entsprechenden Rechner installiert sein. In der heutigen Zeit von DSL ist dies aber vermutlich keine sonderliche Belastung für den Endnutzer. In der Linux-Welt ist meistens SDL sowieso gleich von Haus aus mit dabei und wird auch von aktuellen Titeln wie Unreal2k4 verwendet. 2. Die Funktionsnamen/Variablen sind nicht immer intuitiv verwendbar. Gerade am Anfang wird man wohl nicht ohne Doku auskommen (also ne zusätzliches Browser-Fenster *g). Da die Aufgaben meist allerdings nur auf ein "Fenster her" basiert und einem "Taste verarbeiten") ist man sehr schnell in den wichtigsten Grundlagen drinne.
wiki.delphigl.com/index.php/SDL

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."