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

Aktuelle Zeit: Fr Jul 18, 2025 08:19

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: TOpenControl lazarus probleme
BeitragVerfasst: So Dez 06, 2009 14:15 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Hab hier grad probleme mit der TOpenGLControl Komponente von Lazarus.

Kompilieren lässt sich alles, aber meine ausgabe der Komponente ist aber immer schwarz.

Selbst ein glClearColor funktioniert nicht. Knallt nicht, aber es passiert nix -.-

Vom code her ist es wirklich simpel.

Ich hab ne neue LCL Anwendung erstellt mit einem Form.
Klebe auf das Form eine TOpenGLControl Komponente drauf, setzte das Align auf Client.
Nun pack ich noch nen TIdleTimer auf die Form, sag beim Idle repaint auf das Control fertig.

Was mach ich falsch ?

Hier der code (wirklich simpel):

Code:
  1.  
  2. unit mainform;
  3.  
  4. {$mode objfpc}{$H+}
  5.  
  6. interface
  7.  
  8. uses
  9.   // FPC
  10.   Classes,
  11.   SysUtils,
  12.   FileUtil,
  13.   LResources,
  14.   Forms,
  15.   Controls,
  16.   Graphics,
  17.   Dialogs, StdCtrls, ExtCtrls,
  18.   OpenGLContext,
  19.   DGLOpenGL;
  20.  
  21. type
  22.  
  23.   { TForm1 }
  24.  
  25.   TForm1 = class(TForm)
  26.     IdleTimer1: TIdleTimer;
  27.     OpenGLControl1: TOpenGLControl;
  28.     procedure FormCreate(Sender: TObject);
  29.     procedure IdleTimer1Timer(Sender: TObject);
  30.     procedure OpenGLControl1Paint(Sender: TObject);
  31.     procedure OpenGLControl1Resize(Sender: TObject);
  32.   private
  33.     { private declarations }
  34.   public
  35.     { public declarations }
  36.   end;
  37.  
  38. var
  39.   Form1: TForm1;
  40.  
  41. implementation
  42.  
  43. { TForm1 }
  44.  
  45. procedure TForm1.FormCreate(Sender: TObject);
  46. begin
  47.   // Init OpenGL
  48.   glClearColor(1,1,1,1);
  49. end;
  50.  
  51. procedure TForm1.IdleTimer1Timer(Sender: TObject);
  52. begin
  53.   OpenGLControl1.Invalidate;
  54. end;
  55.  
  56. procedure TForm1.OpenGLControl1Paint(Sender: TObject);
  57. begin
  58.   // Render
  59.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  60.  
  61.   glTranslatef(0,0,-4);
  62.  
  63.   glBegin(GL_TRIANGLES);
  64.     glColor3f(1, 0, 0); glVertex3f(-1,-1, 0);
  65.     glColor3f(0, 0, 1); glVertex3f( 1,-1, 0);
  66.     glColor3f(0, 1, 0); glVertex3f( 0, 1, 0);
  67.   glEnd;
  68.  
  69.   // Bild auf den Schirm bringen
  70.   OpenGLControl1.SwapBuffers;
  71. end;
  72.  
  73. procedure TForm1.OpenGLControl1Resize(Sender: TObject);
  74. begin
  75.   // Resize
  76.   glViewport(0, 0, ClientWidth, ClientHeight);
  77.   glMatrixMode(GL_PROJECTION);
  78.   glLoadIdentity;
  79.   gluPerspective(60, ClientWidth/ClientHeight, 0.1, 100);
  80.   glMatrixMode(GL_MODELVIEW);
  81. end;
  82.  
  83. initialization
  84.   {$I mainform.lrs}
  85.   InitOpenGL;
  86.   ReadExtensions;
  87.  
  88. end.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TOpenControl lazarus probleme
BeitragVerfasst: So Dez 06, 2009 19:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Ich häng Dir mal hier ein Lazarus-Programm dazu, damit funktioniert es bei mir unter Lazarus 0.9.28-2 mit Linux und GTK2. Sollte eigentlich auch in Windows keine Probleme bereiten.
Lg,
Traude


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TOpenControl lazarus probleme
BeitragVerfasst: Mo Dez 07, 2009 10:10 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Ah ok, danke damit gehts.

Seh ich also das richtig das mal dieses Control nicht mit der Standard DFM implementierung laufen lassen kann ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TOpenControl lazarus probleme
BeitragVerfasst: Mo Dez 07, 2009 12:43 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Ich weiß jetzt nicht, was DFM heißt. Aber wenn Du damit meinst, dass man bei Verwenden der Lazarus-OpenGL-Komponente nicht das übliche "CreateRenderingContext" verwenden kann, dann hast Du recht, hab ich auch schon mehrmals geschrieben hier.

Arbeitest Du unter Windows? Dann müsste das normale Aufsetzen des RC eigentlich genauso wie in Delphi funktionieren - aber auf einem normalen Panel, ganz ohne die OpenGL-Komponente. Habe ich aber nie ausprobiert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TOpenControl lazarus probleme
BeitragVerfasst: Di Dez 08, 2009 11:13 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Also mit DFM meinte ich, das man wie in Lazarus Komponenten auf die Form plazieren kann.
Um die initialisierung kümmert sich dann Lazarus normalerweise.

Und diese initialisierung wird in der .DFM (Bei Delphi) gemacht, da werden auch Standard Eigenschaften wie Farbe, Text, etc. festgelegt sowie die Ereignisse gemappt.

Diese Standard Initialiserung geht dann mit der TOpenControl dann nicht =)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TOpenControl lazarus probleme
BeitragVerfasst: Di Dez 08, 2009 14:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Ach so, das meinst Du. Nun, damit Du nicht soviel Arbeit hast, habe ich Dir das Ganze in einer leicht abgeänderten Form nochmals in der neuen 0.9.28-iger Version kompiliert. Hierbei erscheint die Opengl-Komponente im Objekt-Inspektor. Die Lazarus-Formulardatei heißt nicht DFM sondern LFM. Ich habe Dir die Pas- und die LFM-Datei eingepackt. Zusätzlich habe ich statt des OnIdle einen Timer verwendet.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TOpenControl lazarus probleme
BeitragVerfasst: Di Dez 08, 2009 15:24 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Danke :)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder 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 ]