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

Aktuelle Zeit: Mo Jul 14, 2025 21:17

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: GL_Version
BeitragVerfasst: Di Okt 28, 2003 10:06 
Offline
DGL Member

Registriert: Di Okt 28, 2003 09:52
Beiträge: 3
Huhu alle zusammen !

Ich bin ganz neu in diesem Forum, finde es echt klasse.

Folgendes: Ich habe die Datei OpenGl.pas. Jetzt möchte ich mit glGetString die GL_VERSION auslesen. Dazu habe ich einen Rendering Context auf ein Bitmap erzeugt. Der zurückgegebene String ist allerdings leer - weiss jemand, was ich falsch mache ?

Code:
  1.  
  2. ...
  3. uses OpenGl
  4. ...
  5.  
  6. procedure TForm1.Button1Click(Sender: TObject);
  7. var  BitmapContext : HGLRC;
  8. begin
  9.  BitmapContext:=CreateRenderingContext(PaintBox1.Canvas.Handle,[],32,0);
  10.  ActivateRenderingContext(PaintBox1.Canvas.Handle,BitmapContext);
  11.  Label1.Caption := glGetString(GL_VERSION);
  12.  DeactivateRenderingContext;
  13.  DestroyRenderingContext(BitmapContext);
  14. end;
  15.  


Ich wäre für jede Hilfe sehr dankbar.

Viele Grüße, Christian


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 28, 2003 10:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
In deinem obigen Quelltext machst du einen größeren Fehler (allerdings ist das wenn man anfängt halt so) :

Code:
  1. CreateRenderingContext(PaintBox1.Canvas.Handle,[],32,0);

(Ist das gewollt das du keinen Doubelbuffer und keinen Tiefepuffer für deinen Kontext willst?)
CreateRenderingContext erwartet einen gültigen Gerätekontext,während du allerdings nur ein Handle übergibst.Ein Handle ist natürlich <> einem Gerätekontext.An den Gerätekontext kommst du recht leicht :
Code:
  1. DC := GetDC(PaintBox1.Handle);

Und dann musst du im CreateRenderingContet das PaintBox1.Canvas.Handle durch diesen DC ersetzen.

P.S. : Welchen OpenGL-Header benutzt du denn?Der scheint recht alt zu sein, und an deiner Stelle würde ich auf nen neueren Header updaten.Dazu bieten wir in unserer Downloadsektion auch nen DGL-eignenen OpenGL1.5-Header an,der sich in der Praxis bereits als nutzbar erwiesen hat.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 28, 2003 11:34 
Offline
DGL Member

Registriert: Di Okt 28, 2003 09:52
Beiträge: 3
Danke SoS :roll:

Paintbox1.Handle gibt es bei mir nicht, also kann ich davon auch keinen Gerätekontext ermitteln. Habs deshalb mit Mit Paintbox1.Canvas.Handle probiert - geht leider nicht. :? Ich brauche keinen DoubleBuffer etc, weil ich nur ein kleines Tool entwickeln will mit dem ich die Version auslesen kann. mehr nicht. In die Paintbox wird niemals etwas gezeichnet. Zur Erklärung: ein Kunde hat den Fehler: "Need at least OpenGL version 1.1". Dazu würde ich gerne den Versionsstring auslesen, ohne das komplette Programm - mit einem externen Tool also.

Hier mein neuer Code. Vielleicht kannst du mir ja nochmal helfen..

Code:
  1.  
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. var  BitmapContext : HGLRC;
  4.      DC : HDC;
  5. begin
  6.  
  7.  DC := GetDC(PaintBox1.Canvas.Handle);
  8.  BitmapContext:=CreateRenderingContext(DC,[],32,0);
  9.  ActivateRenderingContext(DC,BitmapContext);
  10.  Label1.Caption := glGetString(GL_VERSION);
  11.  DeactivateRenderingContext;
  12.  DestroyRenderingContext(BitmapContext);
  13. end;
  14.  


Danke, Christian


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 28, 2003 11:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Wenn du es nur zum Auslesen der Eigenschaften benötigst, dann kannst du auch einfach das Form1.Handle verwenden oder machst du ein unsichtbares 4x4 Pixels großes Panel irgendwohin und nimmst davon das Handle. Wobei ich eher für das Panel bin. Das sollte dein Problem ja auch lösen.

Du solltest den DC aber auch mit ReleaseDC(Handle, DC) aber auch wieder frei geben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 28, 2003 12:05 
Offline
DGL Member

Registriert: Di Okt 28, 2003 09:52
Beiträge: 3
Danke Lossy eX :wink:

-> Jetzt funktioniert es.


Christian


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 » OpenGL


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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]