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

Aktuelle Zeit: Mo Jul 07, 2025 18:55

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Nov 22, 2007 15:55 
Offline
DGL Member

Registriert: Mi Nov 21, 2007 20:47
Beiträge: 2
Sorry wenn ich jetzt mit einer der "vielen" überflüssigen Fragen komme.
Aber ich bin am verzweifeln. Entweder ich bin dumm oder ich finde denn Fehler nicht.
Bin noch ein totaler anfänger in sachen OpenGl programmieren...
Jetzt mal zu meinem eigentlichen Problem...

...

Also bin im moment noch beim "Tutorial Quickstart".
So joa hab alles so gemacht wie es erklärt wurde... (Nebenbei noch ein großes Lob is sehr verständlich gemacht)
Nur jetzt kommt der Fehler...
Wenn ich es Komplimieren will dann kommt immer:
"Undefinierter Bezeichner: "IdleHandler"

Ich hab leider keine Ahnung was ich nun weiter machen soll...
Könnt ihr mir evt. weiterhelfen =)

Hier der Quelltext:

Code:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, DGLOpenGL;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     procedure FormCreate(Sender: TObject);
  12.     procedure FormResize(Sender: TObject);
  13.     procedure FormDestroy(Sender: TObject);
  14.   private
  15.     StartTime, TimeCount, FrameCount  : Cardinal;
  16.     Frames, DrawTime                  : Cardinal;
  17.     procedure SetupGL;
  18.     procedure Init;
  19.     procedure Render;
  20.     procedure ErrorHandler;
  21.    public
  22.     DC                                : HDC;
  23.     RC                                : HGLRC;
  24.   end;
  25.  
  26. var
  27.   Form1: TForm1;
  28. const
  29.   NearClipping = 1;
  30.   FarClipping  = 1000;
  31.  
  32. implementation
  33.  
  34. {$R *.dfm}
  35.  
  36. procedure TForm1.FormCreate(Sender: TObject);
  37. begin
  38. DC:= GetDC(Handle);
  39.   if not InitOpenGL then Application.Terminate;
  40.   RC:= CreateRenderingContext( DC,
  41.                                [opDoubleBuffered],
  42.                                32,
  43.                                24,
  44.                                0,0,0,
  45.                                0);
  46.   ActivateRenderingContext(DC, RC);
  47.   SetupGL;
  48.   Init;
  49.   Application.OnIdle := IdleHandler;
  50. end;
  51.  
  52. procedure TForm1.SetupGL;
  53. begin
  54.   glClearColor(0.3, 0.4, 0.7, 0.0); //Hintergrundfarbe: Hier ein leichtes Blau
  55.   glEnable(GL_DEPTH_TEST);          //Tiefentest aktivieren
  56.   glEnable(GL_CULL_FACE);           //Backface Culling aktivieren
  57. end;
  58.  
  59. procedure TForm1.FormResize(Sender: TObject);
  60. var tmpBool : Boolean;
  61. begin
  62.   glViewport(0, 0, ClientWidth, ClientHeight);
  63.   glMatrixMode(GL_PROJECTION);
  64.   glLoadIdentity;
  65.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);    
  66.  
  67.   glMatrixMode(GL_MODELVIEW);
  68.   glLoadIdentity;
  69.   IdleHandler(Sender, tmpBool);
  70. end;
  71.  
  72. procedure TForm1.FormDestroy(Sender: TObject);
  73. begin
  74.   DeactivateRenderingContext;
  75.   DestroyRenderingContext(RC);
  76.   ReleaseDC(Handle, DC);
  77. end;
  78.  
  79. procedure TForm1.Render;
  80. begin
  81.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  82.  
  83.   glMatrixMode(GL_PROJECTION);
  84.   glLoadIdentity;
  85.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  86.  
  87.   glMatrixMode(GL_MODELVIEW);
  88.   glLoadIdentity;
  89.  
  90.   glTranslatef(0, 0, -5);
  91.  
  92.   glBegin(GL_QUADS);
  93.     glColor3f(1, 0, 0); glVertex3f(0, 0, 0);
  94.     glColor3f(0, 1, 0); glVertex3f(1, 0, 0);
  95.     glColor3f(0, 0, 1); glVertex3f(1, 1, 0);
  96.     glColor3f(1, 1, 0); glVertex3f(0, 1, 0);
  97.   glEnd;
  98.  
  99.   SwapBuffers(DC);
  100. end;
  101.  
  102. procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
  103. begin
  104.   StartTime:= GetTickCount;
  105.   Render;
  106.   DrawTime:= GetTickCount - StartTime;
  107.   Inc(TimeCount, DrawTime);
  108.   Inc(FrameCount);
  109.  
  110.   if TimeCount >= 1000 then begin
  111.     Frames:= FrameCount;
  112.     TimeCount:= TimeCount - 1000;
  113.     FrameCount:= 0;
  114.     Caption:= InttoStr(Frames) + 'FPS';
  115.     ErrorHandler;
  116.   end;
  117.   sleep(5)
  118.   Done:= false;
  119. end;
  120.  
  121. procedure TForm1.ErrorHandler;
  122. begin
  123.   Form1.Caption := gluErrorString(glGetError);
  124. end;
  125.  
  126. end.


Danke schonmal für eure Hilfe :D

mfg

sir_benni_miles

Achja wer lust hat mir ein wenig den Einstieg zu "versüssen" *gg* kann mich ja in ICQ hinzufügen -> 302-788-988


// Edit Lossy: Code durch Pascaltags ersetzt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 22, 2007 16:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Heyo

Also, das Problem liegt darin, dass in der Klassendefinition für TForm1 die Methode IdleHandler garnicht vorkommt.
Code:
  1.  
  2.   TForm1 = class(TForm)
  3.     procedure FormCreate(Sender: TObject);
  4.     procedure FormResize(Sender: TObject);
  5.     procedure FormDestroy(Sender: TObject);
  6.     procedure IdleHandler(Sender: TObject; var Done: Boolean); // Dasda fehlt
  7.   private


Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 22, 2007 17:58 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Überflüssig war die Frage nicht:
Hab im Tutorial an der Stelle wo der Idle-Handler erklärt wird einen Hinweis eingetragen.

Das du damit Probleme hast zeigt, dass du auch mit Delphi noch nicht allzuviel Erfahrung hast. Als Tipp kann ich dir nur raten keine Angst vor Compilermeldungen zu haben. Wenn bei uns beim abarbeiten der Tutorials mal ein Fehler kommt, dann sollte das eigentlich immer was ganz primitives sein. (Wenns große Patzer wären hätte man uns das hier im Forum schon merken lassen. ;) ) Deshalb: einfach mal bisl rumprobieren, dann gehts meistens schon. ;)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 22, 2007 20:47 
Offline
DGL Member

Registriert: Mi Nov 21, 2007 20:47
Beiträge: 2
oki doki :D
danke für die schnelle hilfe *gg*

schönen abend noch =)

mfg


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]