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

Aktuelle Zeit: So Jul 06, 2025 23:44

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Anfänger hat Problem
BeitragVerfasst: Mo Mär 12, 2007 21:35 
Offline
DGL Member

Registriert: So Mär 11, 2007 11:30
Beiträge: 2
Wohnort: Riesa (Dresden)
Hallo Community,
ich bin ein absoluter Anfänger mit openGL und Delphi, hab aber schon Erfahrung mit anderen Programmiersprachen und PASCAL. Ich bin vor ein paar Tagen auf diese Seite gestoßen und hab mich sofort für das Thema interressiert. Also hab ich mir die ersten beiden Lektionen des Tutorials durchgelesen und wollte das mal ausprobieren. Ich hab einen ersten Quelltext in mein Delphi 7 Pro eingegeben und gehofft, dass ein weißes Dreieck auf dem Bildschirm erscheint. Dem war aber nicht so. Ich bitte euch mir einen korrekten Code (möglichst mit Header) zu posten. Allerdings freue ich mich auch über jede andere Hilfe oder einen anderen Quelltext zum Testen meiner Software.

danke im Vorraus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re:
BeitragVerfasst: Mo Mär 12, 2007 22:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
hi,
am einfachsten wäre es wohl, wenn du dir erst einmal eines der templates von dieser seite runterlädst. du findest sie unter files->templates. unter files->library findest du auch die aktuelle version des dglopengl-headers und auch die dglsdk, dort sind auch neben den meisten libraries, die man benötigt, einige kleine demos enthalten. ich hoffe, du kannst mit damit was anfangen...
ansonsten könntest du noch posten, was du bisher schon so an code produziert hast, dann kann dir bestimmt gesagt werden, wo da die fehler liegen ;)

Joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 13, 2007 00:22 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ja. Der Antichrist hats schon richtig gesagt. Deine Optionen sind unsere Template nehmen und fertig, oder die Hosen runter lassen und uns mal bisl quelltext zeigen. Das ding zum laufen zu bringen sollte nicht alzu schnwer sein. Wenn du den quickstart nachprogrammiert hast, solltest du zumindest alle wichtigen Teile schon zusammenhaben.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 13, 2007 19:28 
Offline
DGL Member

Registriert: So Mär 11, 2007 11:30
Beiträge: 2
Wohnort: Riesa (Dresden)
moin,
also erstmal möchte ich euch sehr für eure spontane Hilfe danken. allerdings funktioniert das ganze nicht so auf Anhieb. Nur um nochmal konkret zu sagen was ich gemacht hab: 1) Delphi installiert 2) dgl sdk runtergeladen, installiert und die ordner in die entsprechenden im Programmverzeichnis kopiert 3) nach eurem Rat auf der dgl-seite unter Files den Code für die Lektion 2 (siehe unten) runtergeladen und entpackt 3) den Quelltext mit Delphi geöffnet und auf RUN geklickt.

aber dann kommt das kuriose: nachdem ich die Schaltfläche gedrückt hatte, zeigte Delphi ca. eine Sekunde "RUNNING" in der Taskleiste an und ging dann wieder in den Normalzustand über. keine Fehlermeldung. nix. Damn. :evil: :?: :evil:

ich hoffe ihr könnt mir helfen.

Code:
  1. unit lesson2_1_vcl_main;
  2. {******************************************************************************}
  3. {                                                                              }
  4. {       OpenGl Tutorial 2 - VCL                                                }
  5. {                                                                              }
  6. { Copyright (C) 2002 Delphi OpenGl Community                                   }
  7. {   11/03/2002: ported from API to VCL by Delphic                              }
  8. { All Rights Reserved.                                                         }
  9. {                                                                              }
  10. {       Obtained through:                                                      }
  11. {       Delphi OpenGL Community(DGL)                                           }
  12. {                                                                              }
  13. { You may retrieve the latest version of this file at the Delphi OpenGL        }
  14. { Community home page, located at http://dgl.quellcodes.de/                    }
  15. {                                                                              }
  16. { The contents of this file are used with permission, subject to               }
  17. { the Mozilla Public License Version 1.1 (the "License"); you may              }
  18. { not use this file except in compliance with the License. You may             }
  19. { obtain a copy of the License at                                              }
  20. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  21. {                                                                              }
  22. { Software distributed under the License is distributed on an                  }
  23. { "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or               }
  24. { implied. See the License for the specific language governing                 }
  25. { rights and limitations under the License.                                    }
  26. {                                                                              }
  27. {******************************************************************************}
  28. interface
  29.  
  30. uses
  31.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  32.   dglopengl, Geometry, StdCtrls, ExtCtrls;
  33.  
  34. const
  35.   //Entfernung der Clipping planes
  36.   FarClipping   = 100.0;
  37.   NearClipping  = 1.0;
  38.  
  39.   AppTitle = 'http://dgl.quellcodes.de/ - OpenGL Tutorial 2';
  40.  
  41. type
  42.   TMainForm = class(TForm)
  43.     procedure FormCreate(Sender: TObject);
  44.     procedure FormShow(Sender: TObject);
  45.     procedure FormDestroy(Sender: TObject);
  46.     procedure FormResize(Sender: TObject);
  47.     procedure ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
  48.   private
  49.     { Private-Deklarationen }
  50.     OpenGLInitialized : Boolean; //Ist true, wenn OpenGL bereit zum zeichnen ist
  51.     RC : HGLRC;         //OpenGL Rendering Context
  52.  
  53.     //Daten, für den Framecounter
  54.     StartTick : Cardinal;
  55.     Frames : LongInt;
  56.  
  57.   public
  58.     { Public-Deklarationen }
  59.   end;
  60.  
  61. var
  62.   MainForm: TMainForm;
  63.  
  64. implementation
  65.  
  66. {$R *.DFM}
  67.  
  68. procedure TMainForm.FormCreate(Sender: TObject);
  69. begin
  70.   //OpenGL ist noch nicht bereit
  71.   OpenGLInitialized := False;
  72.   //Nur starten, wenn die Bibliotheken auch geladen sind
  73.   if not LoadOpenGL then
  74.     Halt(100)
  75. end; (*FormCreate*)
  76.  
  77. procedure TMainForm.FormShow(Sender: TObject);
  78.   procedure SetPixelFormat;
  79.   var
  80.     PixelFormat      : TGLuint;
  81.     PFD              : pixelformatdescriptor;
  82.   begin
  83.     with pfd do
  84.       begin
  85.         nSize:= SizeOf( PIXELFORMATDESCRIPTOR );
  86.         nVersion:= 1;
  87.         dwFlags:= PFD_DRAW_TO_WINDOW
  88.           or PFD_SUPPORT_OPENGL
  89.           or PFD_DOUBLEBUFFER;
  90.         iPixelType:= PFD_TYPE_RGBA;
  91.         cColorBits:= 16;             //Farbtiefe
  92.         cRedBits:= 0;
  93.         cRedShift:= 0;
  94.         cGreenBits:= 0;
  95.         cBlueBits:= 0;
  96.         cBlueShift:= 0;
  97.         cAlphaBits:= 0;
  98.         cAlphaShift:= 0;
  99.         cAccumBits:= 0;              //Accumulation Buffer
  100.         cAccumRedBits:= 0;
  101.         cAccumGreenBits:= 0;
  102.         cAccumBlueBits:= 0;
  103.         cAccumAlphaBits:= 0;
  104.         cDepthBits:= 16;             //Z-Buffer Tiefe
  105.         cStencilBits:= 0;            //Stencil Buffer
  106.         cAuxBuffers:= 0;
  107.         iLayerType:= PFD_MAIN_PLANE;
  108.         bReserved:= 0;
  109.         dwLayerMask:= 0;
  110.         dwVisibleMask:= 0;
  111.         dwDamageMask:= 0
  112.       end;
  113.     //Pixel Format setzten
  114.     PixelFormat := ChoosePixelFormat(Canvas.Handle, @pfd);
  115.     if (PixelFormat=0) then
  116.       MessageDlg('Es konnte kein passendes PixelFormat gefunden werden.', mtError, [mbOk], 0);
  117.     if (not Windows.SetPixelFormat(Canvas.Handle,PixelFormat,@pfd)) then
  118.       MessageDlg('PixelFormat konnte nicht gesetzt werden.', mtError, [mbOk], 0)
  119.   end; (*SetPixelFormat*)
  120.  
  121.   procedure StartGl;
  122.   begin
  123.     //Rendering Context initialisieren
  124.     RC := wglCreateContext(Canvas.Handle);
  125.     if (RC=0) then
  126.     begin
  127.       MessageDlg('Rendering Context kann nicht erstellt werden.', mtError, [mbOk], 0);
  128.       Halt(100)
  129.     end;
  130.  
  131.     if (not wglMakeCurrent(Canvas.Handle, RC)) then
  132.     begin
  133.       MessageDlg('Rendering Context kann nicht aktiviert werden.', mtError, [mbOk], 0);
  134.       Halt(100)
  135.     end
  136.   end; (*StartGl*)
  137.  
  138.   procedure SetupGL;
  139.   begin
  140.     glShadeModel(GL_SMOOTH);           // Aktiviert weiches Shading
  141.     glClearColor(0.0, 0.0, 0.0, 0.5);    // Bildschirm löschen (schwarz)
  142.     glClearDepth(1.0);             // Depth Buffer Setup
  143.     glEnable(GL_DEPTH_TEST);           // Aktiviert Depth Testing
  144.     glDepthFunc(GL_LEQUAL);        // Bestimmt den Typ des Depth Testing
  145.     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  146.                                            // Qualitativ bessere Koordinaten Interpolation
  147.   end; (*SetupGL*)
  148.  
  149. begin
  150.   RC := 0;
  151.  
  152.   SetPixelFormat;
  153.   StartGL;
  154.  
  155.   //GL Extensions neu auslesen
  156.   ClearExtensions;
  157.   ReadExtensions;
  158.  
  159.   SetupGL;
  160.  
  161.   //Kleinkram initialisieren
  162.   Frames := 0;
  163.   StartTick := GetTickCount;
  164.  
  165.   //OnIdle setzen
  166.   Application.OnIdle := ApplicationEventsIdle;
  167.  
  168.   //OpenGL ist nun bereit
  169.   OpenGLInitialized := True
  170. end; (*FormShow*)
  171.  
  172. procedure TMainForm.FormDestroy(Sender: TObject);
  173. begin
  174.   OpenGLInitialized := False;
  175.   if RC<>0 then
  176.     begin
  177.       if (not wglMakeCurrent(Canvas.Handle,0)) then
  178.         MessageDlg('Rendering Context konnte nicht abgewählt werden.', mtError, [mbOk], 0);
  179.       if (not wglDeleteContext(RC)) then
  180.         MessageDlg('Rendering Context konnte nicht freigegeben werden.', mtError, [mbOk], 0)
  181.     end;
  182.   RC:=0
  183. end; (*Form Destroy*)
  184.  
  185. procedure TMainForm.FormResize(Sender: TObject);
  186. begin
  187.   glViewport(0, 0, ClientWidth, ClientHeight);
  188.   //Projektionsmatrix resetten
  189.   glMatrixMode(GL_PROJECTION);
  190.   glLoadIdentity();
  191.   //Perspektivische Darstellung
  192.   gluPerspective(45.0,ClientWidth/ClientHeight,NearClipping,FarClipping);// Calculate The Aspect Ratio Of The Window
  193.   glMatrixMode(GL_MODELVIEW);
  194.   glLoadIdentity
  195. end; (*FormResize*)
  196.  
  197. procedure TMainForm.ApplicationEventsIdle(Sender: TObject;
  198.   var Done: Boolean);
  199.  
  200. var
  201.   Error : LongInt; //Fehler?
  202.  
  203. begin
  204.   //Abbrechen, wenn OpenGL noch nicht initialisiert ist
  205.   if not OpenGLInitialized then Exit;
  206.   //Immer schön neu zeichnen
  207.   Done := False;
  208.  
  209.   glClearColor(0,0,0,0);
  210.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  211.  
  212.   glLoadIdentity;
  213.   glTranslatef( -1.5,  0,  -6);
  214.  
  215.   {TIP: Entferne die beiden oberen glColor3f. Das Dreieck wird dann "blau" gezeichnet
  216.         werden! Wenn Sie beim starten ganz schnell gucken, wirst du feststellen, dass das
  217.         Dreieck kurz weiß zu flackern scheint. Der Grund dafür ist, dass beim ersten Durchgang
  218.         die beiden ersten Eckpunkte weiß gezeichnet werden und erst beim nächsten Durchgang
  219.         blau gefärbt werden. Um dies zu vermeiden müßte man bereits vor dem Zeichnen dieser
  220.         beiden Eckpunkte die Farbe auf blau setzen!}
  221.  
  222.   glBegin(GL_TRIANGLES);
  223.       glColor3f(1,0,0);                // alle weiteren Vertice werden rot gezeichnet
  224.       glVertex3f(-1.0,-1.0, 0.0);
  225.       glColor3f(0,1,0);                // alle weiteren Verticen werden grün gezeichnet
  226.       glVertex3f( 0.0, 1.0, 0.0);
  227.       glColor3f(0,0,1);                // alle weiteren Verticen werden blau gezeichnet
  228.       glVertex3f( 1.0,-1.0, 0.0);
  229.   glEnd();
  230.  
  231.   //Error Handler
  232.   Error := glgetError;
  233.   if Error <> GL_NO_ERROR then
  234.   begin
  235.     Caption := gluErrorString(Error);
  236.     //Rendering kurz anhalten
  237.     Done := True;
  238.     FlashWindow(Handle, True)
  239.   end;
  240.   //Frame Counter
  241.   Inc(Frames);
  242.   if GetTickCount - StartTick >=500 then
  243.   begin
  244.     Caption := Format('%s [%f FPS]', [AppTitle, Frames/(GetTickCount - StartTick)*1000]);
  245.     Frames := 0;
  246.     StartTick := GetTickCount
  247.   end;
  248.   //Und anzeigen
  249.   SwapBuffers(Canvas.Handle)
  250. end; (*ApplicationEventsIdle*)
  251.  
  252. end.
  253.  
  254.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 13, 2007 19:36 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Öffne mal eins der Templates und probier das mal zu starten. Der Code mit dem Pixelformatdiscriptor sieht etwas ... angestaubt aus.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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.014s | 15 Queries | GZIP : On ]