Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 17, 2025 12:07

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Korrekturleser/innen für Tutorial
BeitragVerfasst: Di Nov 19, 2002 06:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 10, 2002 10:54
Beiträge: 42
Huhu,
im Moment bin ich dabei ein Tutorial zu schreiben, es behandelt OpenGL Initialisierung unter FreePascal mit SDL.

Nun bräuchte ich Korrekturleser, denn in einigen Fragen bin ich mir nicht sicher, toll wäre, wenn sich auch (Jedi)SDL Experten darunter mischen würden.

Ich denke in einer Woche wird das Tutorial fertig sein.

_________________
FreePascal unter Linux


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 19, 2002 13:58 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Naja, wäre verbunden, wenn man auch ne Abzug zum "Korrektur" lesen bekommen könnte. Selbst wenn meine SDL-Kenntnisse eher begrenzt sind :oops:

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 19, 2002 19:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Zitat:
SDL

Um mal ganz unerschämt zu fragen: Was ist das? :roll:
Hee... ich scherze bloß... :D Aber viel versteh ich davon auch nich :?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 20, 2002 08:27 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
SDL steht für (S)imple (D)irektMedia (L)ayer. Ist 'ne Lib für Sound, Eingabe und 2D-Grafik welche als platformunabhängige Library zur Verfügung steht. Ganz nett, aber nach meinem Geschmack, aufgrund der Tatsache das man alles 3D-Mässige mit OpenGL selber initialisieren muss, ein bisschen witzlos. Wobei... für 2D-Grafik und vor allem Eingabe ist sie wiederum recht gut. Hmmm...

Schau einfach mal unter www.libsdl.org nach und mach Dir 'n eigenes Bild. Und bevor Du fragst: unter www.delphi-jedi.org gibt's die Delphi-Units dafür.

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 20, 2002 14:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 10, 2002 10:54
Beiträge: 42
Also so kompliziert finde ich die OpenGL Initialisierung mit SDL nicht ? ist warscheinlich Ansichssache.

_________________
FreePascal unter Linux


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 20, 2002 14:36 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Das meinte ich auch nicht. Ich fänd's nur besser, wenn die OpenGL-Initialisierungs-Geschichte gleich mit in SDL implementiert wäre. Dann hätte man wirklich einen DirectX-Ersatz! Aber eigentlich ist es ja nur eine Kleinigkeit. So schlecht ist SDL nun auch wieder nicht, muss ich eingestehen!

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 20, 2002 15:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Zitat:
Hee... ich scherze bloß...
= Ich weiß, was es ist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 20, 2002 16:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 10, 2002 10:54
Beiträge: 42
Zitat:
Das meinte ich auch nicht. Ich fänd's nur besser, wenn die OpenGL-Initialisierungs-Geschichte gleich mit in SDL implementiert wäre. Dann hätte man wirklich einen DirectX-Ersatz! Aber eigentlich ist es ja nur eine Kleinigkeit. So schlecht ist SDL nun auch wieder nicht, muss ich eingestehen!


Schreib dir einfach eine Libraray mit einer Funktion SDL_GL_INIT oder das ganze als Anregung an das Development Team.

Wenn ich es mit einer WinAPI initialisierung vergleiche, dann ist SDL kurzer Quelltext par Excellence.

_________________
FreePascal unter Linux


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 29, 2002 16:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 10, 2002 10:54
Beiträge: 42
Es ist soweit, fleißig lesen, kritisieren und verbessern.

Code:
  1.  
  2.  
  3. {$MODE OBJFPC}
  4.  
  5. {
  6.  
  7. Vorab: Obwohl ich didaktisch kein Genie nicht so gut bin hoffe ich dass dieses Ding nützlich ist.
  8.  
  9.  
  10.  
  11. Und nun zu Sache:
  12.  
  13. FreePascal, dieser kleine, schlanke 32-Bit (Object-)pascalcompiler erfreut sich immer mehr Belibetheit. Einerseits wegen der vielen unterstützten Systeme, andererseits weil er kostenlos ist. und alle selbst geschriebenen Programme frei veröffentlicht werden dürfen. Bei vielen jedoch fristet er ein Schattendasein als Turbo-Pascal-Ersatz. Dass FreePascal jedoch weitgehend über Delphis Object Pascal Syntax verfügt, und mit der FreePascal Component Library (Welche selbst Units für MySQL, ZIP Dateien, XML beinhaltet) mächtige Werkzeuge zur Verfügung stehen, ist eher unbekannt. Im Zuge dessen wurden auch Delphi Bibliotheken wie die Unit "Classes" (TStream, TFileStream, etc.) nachprogrammiert. Die implementation der Delphi Objektorientierung machts möglich.
  14.  
  15. }
  16.  
  17. //TIP: {$MODE OBJFPC} oder {$MODE DELPHI} nehmen, damit werden Delphi Klassen unterstützt.
  18.  
  19. {
  20.  
  21. Es gibt also viele Möglichkeiten, in denen FreePascal anwendbar ist. Eine weitere ist ? trommelwirbel - _OpenGL_ ? worum sich dieses Tutorial dreht.
  22.  
  23.  
  24.  
  25. Dieses Tutorial-im-Quelltext soll dir zeigen, was du zum Programmieren von OpenGL mit FreePascal brauchst, und wie du es angehen kannst, ich hoffe du hast deine Freude daran mit den Quelltexten herumzuspielen, und ein verständnis für OpenGL zu erlangen, bevor du beginnst solltest du aber wissen, dass es nicht einfach war dieses Tutorial zu schreiben, ich stand nähmlich vor der Frage, welchen Wegder Initialisierung ich zeigen sollte, zur Auswahl stehen:
  26.  
  27. o SDL (Simple Direct Media Layer, oder so), GLUT
  28.  
  29. o Glut
  30.  
  31. o WinAPI
  32.  
  33. o GtkGlArea (soweit ich weiß)
  34.  
  35.  
  36.  
  37.  
  38.  
  39. Ich will nun nicht das ganze für und wieder durchkauen, ich habe mich für SDL entschieden, denn SDL hat bietet neben der OpenGL Initialisierung und dem Event- Handling noch Sound - Unterstützung und viel mehr, das ganze Plattformunabhängig. Leider ist es auch komplex, deshalb weise ich auch ausdrücklich darauf hin, dass es bessere Initialisierungswege geben mag, und das dieser Quelltext keine Universallösung sein muss. Für die ersten Beispiele tut er es auf jeden Fall.
  40.  
  41. Dieses Tutorial sollte auf jeden Fall in Verbindung mit Tutorial1 und Tutorial2 von delphigl.com  genossen werden. Ich werde nicht auf die OpenGL Befehle eingehen.
  42.  
  43.  
  44.  
  45. Was du also neben Pascal Grundkenntnissen benötigst ist:
  46.  
  47. o SDL4FreePascal in Version 1.2 oder höher (JediSDL frisst mein FreePascal Compiler nicht). Mit Google leicht zufinden. Außerdem noch die SDL Runtime Library -  www.libsdl.org.
  48.  
  49. o eine neue OpenGL Unit Version von FreePascal, erreichbar über den CVS Server, da die alten unvollständig sind.
  50.  
  51. o Eine aktuelle Version des FreePascal Compilers (1.0.6) für Windows oder Linux (wenn die OpenGL Units auch unter BeOS laufen wüsste ichs gerne). By the way: Wenn jemand mir sagen könnte dób dieses Beispiel auch Problemlos auf Linux läuft wär's gut.
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. Jetzt aber ran an die Arbeit!!!
  60.  
  61. }
  62.  
  63.  
  64.  
  65. program
  66.  
  67.    OpenGLmitFreePascal;
  68.  
  69. {
  70.  
  71. Als erstes werden wir unsere Units einbinden, es sind:
  72.  
  73. }
  74.  
  75. uses
  76.  
  77.    gl,          {OpenGL Befehle}
  78.  
  79.    glu,         {OpenGL Hilfsbefehle}
  80.  
  81.    sdl,         {SDL, unsere API}
  82.  
  83.    sdl_video,   {Wir wollen mit Graphik arbeiten}
  84.  
  85.    sdl_events,  {Und Ereignisse behandeln}
  86.  
  87.    sdl_types,   {Grundlegende Typen}
  88.  
  89.    Crt;         {Wegen unserer netten KeyPressed Funktion}
  90.  
  91.  
  92.  
  93. {Jetzt geht es richtig los.
  94.  
  95. Ich rechne an dieser Stelle fest damit, dass einige ein reserviertes Attribut von Prozeduren/Funktionen nicht kennen, es nennt sich forward. Wenn eine Prozedur mit diesem Attribut versehen wird, muss sie erst später im Quelltext definiert werden. Ich nutze es gerne, um einen Überblick über meine Programme zu erhalten.
  96.  
  97.  
  98.  
  99. Wir benötigen mehrere Prozeduren, ich habe sie alle mit Forward deklariert:}
  100.  
  101.  
  102.  
  103. procedure ResizeSurface(width, height : Integer); forward; {Eine Prozedur, die aufgerufen wird, wenn die Größe des Fensters geändert wird}
  104.  
  105. procedure DrawGL; forward;                                 {In dieser Prozedur werden die Sachen gezeichnet}
  106.  
  107. procedure InitGL; forward;                                 {In dieser Prozedur wir OpenGL Initialisiert}
  108.  
  109. procedure Escape(Meldung : ansistring); forward;           {Und noch eine kleine Prozedur, die das Programm beendet, wenn ein Fehler Auftritt.}
  110.  
  111.  
  112.  
  113. {Bevor wir uns jedoch um den Inhalt der Prozeduren kümmern, sollten wir uns um die Initialisierung kümmern. Scrolle bitte bis zur Variablendeklaration}
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125. {Folgendes habe ich fast 1:1 aus Phoebus' Tutorial.}
  126.  
  127. procedure ResizeSurface(width, height : Integer);
  128.  
  129. begin
  130.  
  131.   if (Height = 0) then Height := 1;
  132.  
  133.   glViewport(0, 0, Width, Height);    // Setzt den Viewport für das OpenGL Fenster
  134.  
  135.   glMatrixMode(GL_PROJECTION);        // Matrix Mode auf Projection setzen
  136.  
  137.   glLoadIdentity();                   // Reset View
  138.  
  139.   gluPerspective(45.0, Width/Height, 1.0, 100.0);  // Perspektive den neuen Maßen anpassen.
  140.  
  141.   glMatrixMode(GL_MODELVIEW);         // Zurück zur Modelview Matrix
  142.  
  143.   glLoadIdentity();                   // Reset View
  144.  
  145. end;
  146.  
  147.  
  148.  
  149. procedure DrawGL;
  150.  
  151. begin
  152.  
  153.   glClearColor(0,0,0,0);
  154.  
  155.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  156.  
  157.  
  158.  
  159.   glLoadIdentity;
  160.  
  161.   glTranslatef( -1.5,  0,  -6);
  162.  
  163.  
  164.  
  165.   {TIP: Entferne die beiden oberen glColor3f. Das Dreieck wird dann "blau" gezeichnet
  166.  
  167.         werden! Wenn Sie beim starten ganz schnell gucken, wirst du feststellen, dass das
  168.  
  169.         Dreieck kurz weiß zu flackern scheint. Der Grund dafür ist, dass beim ersten Durchgang
  170.  
  171.         die beiden ersten Eckpunkte weiß gezeichnet werden und erst beim nächsten Durchgang
  172.  
  173.         blau gefärbt werden. Um dies zu vermeiden müßte man bereits vor dem Zeichnen dieser
  174.  
  175.         beiden Eckpunkte die Farbe auf blau setzen!}
  176.  
  177.  
  178.  
  179.   glBegin(GL_TRIANGLES);
  180.  
  181.       glColor3f(1,0,0);                // alle weiteren Vertice werden rot gezeichnet
  182.  
  183.       glVertex3f(-1.0,-1.0, 0.0);
  184.  
  185.       glColor3f(0,1,0);                // alle weiteren Verticen werden grün gezeichnet
  186.  
  187.       glVertex3f( 0.0, 1.0, 0.0);
  188.  
  189.       glColor3f(0,0,1);                // alle weiteren Verticen werden blau gezeichnet
  190.  
  191.       glVertex3f( 1.0,-1.0, 0.0);
  192.  
  193.   glEnd();
  194.  
  195.  
  196.  
  197. end;
  198.  
  199.  
  200.  
  201. procedure InitGL;
  202.  
  203. begin
  204.  
  205.   glEnable(GL_TEXTURE_2D);        // Aktiviert Texture Mapping
  206.  
  207.   glShadeModel(GL_SMOOTH);        // Aktiviert weiches Shading
  208.  
  209.   glClearColor(0.0, 0.0, 0.0, 0.5);    // Bildschirm löschen (schwarz)
  210.  
  211.   glClearDepth(1.0);         // Depth Buffer Setup
  212.  
  213.   glEnable(GL_DEPTH_TEST);        // Aktiviert Depth Testing
  214.  
  215.   glDepthFunc(GL_LEQUAL);        // Bestimmt den Typ des Depth Testing
  216.  
  217.   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  218.  
  219.                                          // Qualitativ bessere Koordinaten Interpolation
  220.  
  221. end;
  222.  
  223.  
  224.  
  225. procedure Escape(Meldung : ansistring); {Wenn was schief läuft gibt's eine Fehlermeldung, es wird auf Tastendruck geartet und wir verabschieden uns.}
  226.  
  227. begin
  228.  
  229.    writeln(Meldung);
  230.  
  231.    repeat until Keypressed;
  232.  
  233.    halt;
  234.  
  235. end;
  236.  
  237.  
  238.  
  239. var
  240.  
  241.    videoInfo      : PSDL_VideoInfo; {Zeiger auf Informationen zur Graphikfähigkeit der Hardware}
  242.  
  243.    zeichenflaeche : PSDL_Surface;   {Zeiger auf die Daten unserer Zeichenfläche}
  244.  
  245.    event          : SDL_Event;      {hier wird gespeichert, welche Events es gibt}
  246.  
  247.    videoflags     : uint32;         {Einige Eigenschaften die wir unserer Zeichenfläche auf den Weg geben, wenn sie Initialisiert wird.}
  248.  
  249.    Done           : Boolean;
  250.  
  251. begin
  252.  
  253.    {
  254.  
  255.    Die Initialisierung von SDL wird mit SDL_Init(flags : uint32) : Integer durchgeführt. uint32 ist ein vorzeichenloser (u = unsigned) Integertyp ( in c int), auch Cardinal genannt. Der zurückgegebene Wert ist 0, wenn erfolgreich Initialisiert wurde, ansonsten trat ein fehler auf. Die Flags sind die Modi die Initialisiert werden sollen.
  256.  
  257.  
  258.  
  259.    Wir initialisieren nun den Video Modus, SDL_INIT_VIDEO , und prüfen ob er initialisiert wurde. Wenn nicht, wird das Programm beendet. Weitere Flags werden mit or Verbunden.}
  260.  
  261.  &nbsp; if SDL_Init(SDL_INIT_VIDEO) < 0 then
  262.  
  263.  &nbsp; &nbsp; &nbsp;Escape('SDL_Init(SDL_INIT_VIDEO) schlug fehl');
  264.  
  265.  &nbsp; {Als nächstes Sammeln wir Informationen über die Graphische Ausstattung unseres PCs}
  266.  
  267.  &nbsp; videoInfo := SDL_GetVideoInfo;
  268.  
  269.  &nbsp; {Und prüfen nun ob wir Hardware nutzen können, um unserer Zeichenfläche Hardwareunterstützung zukommen zu lassen, ich gebe zu, ich steige hir nicht ganz genau durch. "videoFlags" wird nachher bei der Initialisierung des SDL_Surfaces übergeben. Viele Einstellungen können über dieses Flag gemacht werden.}
  270.  
  271.  &nbsp; if hw_available(VideoInfo^) <> 0 then
  272.  
  273.  &nbsp; &nbsp; &nbsp;videoFlags := SDL_HWSURFACE {Graphikkarte}
  274.  
  275.  &nbsp; else
  276.  
  277.  &nbsp; &nbsp; &nbsp;videoFlags := SDL_SWSURFACE; {normales Ram}
  278.  
  279.  
  280.  
  281.  &nbsp; {Warum haben wir 3D Graphikkarten? Wegen der Hardwareunterstützung Ob die entsprechende Karte diese besitzt prüfen wir, wenn ja sagen wir, dass wir Hardwarebeschleunigung nutzen wollen.}
  282.  
  283.  &nbsp; if blit_hw(VideoInfo^) <> 0 then
  284.  
  285.  &nbsp; &nbsp; &nbsp;videoFlags := videoFlags or SDL_HWACCEL;
  286.  
  287.  
  288.  
  289.  &nbsp; {Unser Surface soll OpenGL Unterstützen, die und die größe soll geändert werden können.}
  290.  
  291.  &nbsp; videoflags := SDL_OPENGL or SDL_HWPALETTE or SDL_RESIZABLE;
  292.  
  293.  
  294.  
  295.  &nbsp; {
  296.  
  297.  &nbsp; SDL_GL_SetAttribute(attr : SDL_GLattr; value : Integer): Integer;
  298.  
  299.  
  300.  
  301.  &nbsp; Auch ein gebiet, dass ich, ehrlich gesagt noch nicht stark gestreift habe, vorerst sollte reichen, dass wir es brauchen. Wer genaueres weiß sollte ja nicht schweigen.
  302.  
  303. }
  304.  
  305.  
  306.  
  307.  &nbsp; SDL_GL_SetAttribute(SDL_GL_RED_SIZE,5);
  308.  
  309.  &nbsp; SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,5);
  310.  
  311.  &nbsp; SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,5);
  312.  
  313.  &nbsp; SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,16);
  314.  
  315.  &nbsp; SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1);
  316.  
  317.  
  318.  
  319.  &nbsp; {Nun, endlich öffnen wir unser Fenster, und zwar mit
  320.  
  321.  &nbsp; SDL_SetVideoMODE(width,height,bpp : Integer; flags : uint32): PSDL_Surface;
  322.  
  323.  &nbsp; width, height sind klar, bpp ist die Farbtiefe, mit flags übergibet man die zuvor definierten Eigenschaften.
  324.  
  325.  &nbsp; Als Rückgabewert erhält man einen Zeiger auf ein SDL_Surface, was wir mit einem PSDL_SURFACE auffangen.}
  326.  
  327.  &nbsp; zeichenflaeche := SDL_SetVideoMode(640,480,16,VideoFlags);
  328.  
  329.  &nbsp; {Wenn ein Fehler passiert, kann der Rückgabewert nil sein, dann können wir unser Fenster vergessen, und müssen strategischen Rückzug antreten.}
  330.  
  331.  &nbsp; if zeichenflaeche = nil then
  332.  
  333.  &nbsp; &nbsp; &nbsp;Escape('Es ist ein Fehler bei der initialisierung der Zeichenflaeche aufgetreten, das PSDL_Surface ist nil');
  334.  
  335.  &nbsp; {Nun ist der Zeitpunkzt gekommen OpenGL selbst zu Initialisieren}
  336.  
  337.  &nbsp; InitGL;
  338.  
  339.  &nbsp; {Das erstellen unserer Zeichenflaeche kommt einer Veränderung der Größe der Zeichenflaeche gleich, deshalb:}
  340.  
  341.  &nbsp; ResizeSurface(zeichenflaeche^.w, {SDL_Surface ist ein Record, das Attribut w gibt die breite (engl. width) an}
  342.  
  343.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zeichenflaeche^.h); {h gibt die Höhe an}
  344.  
  345.  &nbsp; {Und schließlich kommen wir in die Eventschleife, zuvor setzen wir noch done auf false}
  346.  
  347.  &nbsp; Done := false;
  348.  
  349.  &nbsp; while not Done do {während done false ist }
  350.  
  351.  &nbsp; &nbsp; &nbsp;begin
  352.  
  353.  &nbsp; &nbsp; &nbsp;while SDL_PollEvent(@event) <> 0 do {Solange Events da sind, wird die Schleife wiederhohlt}
  354.  
  355.  &nbsp; &nbsp; &nbsp; &nbsp; case event.eventtype of
  356.  
  357.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SDL_EVENTQUIT: &nbsp; {Jemand will dass Programm beenden}
  358.  
  359.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Done := true; {Schleife wird damit nicht erneut durchlaufen, das Programm wird fortgesetzt, in unserem Fall danach beendet.}
  360.  
  361.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SDL_VIDEORESIZE: {Die Fenstergröße wird geändert}
  362.  
  363.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ResizeSurface(event.resize.w,event.resize.h); {Wir reagieren darauf mit unserer Prozedur, die Parameter enthalten die aktuelle Größe des Fensters}
  364.  
  365.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end;
  366.  
  367.  &nbsp; &nbsp; &nbsp;DrawGL; {Unsere Zeichenfunktion, sie Zeichnet die Elemente}
  368.  
  369.  &nbsp; &nbsp; &nbsp; &nbsp;{Nun benötigen wir noch einen Befehl, der alles auf den Bildschirm bringt, SDL_GL_SWAPBUFFERS;}
  370.  
  371.  &nbsp; &nbsp; &nbsp;SDL_GL_SwapBuffers;
  372.  
  373.  &nbsp; &nbsp; &nbsp;end;
  374.  
  375.  &nbsp; {SDL deinitialisieren (kreative Wortschöpfung)}
  376.  
  377.  &nbsp; SDL_Quit;
  378.  
  379. end.
  380.  
  381. {springe nun zurück, hinter den forward-Deklarationen schreiben wir nun die Prozedur- und Funktionsinhalte}
  382.  
  383.  

_________________
FreePascal unter Linux


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]