AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi OpenGL ohne ein Fenster realisieren ?
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL ohne ein Fenster realisieren ?

Ein Thema von turboPASCAL · begonnen am 29. Aug 2008 · letzter Beitrag vom 30. Aug 2008
Antwort Antwort
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

OpenGL ohne ein Fenster realisieren ?

  Alt 29. Aug 2008, 10:10
Hi,

Gibt es eine Möglichkeit OpenGl-Darstellungen zu erzeugen ohne ein OpenGL-Window zu erzeugen ?
Kennt jmd eine ggf. andere Möglichkeit ?

Falls sich jmd fragt wozu man so etwas benötigt, für eine Vorschaufunktion.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#2

Re: OpenGL ohne ein Fenster realisieren ?

  Alt 29. Aug 2008, 14:15
Einen OpenGL-Renderkontext muss nicht unbedingt an ein Fenster gebunden sein. Du kannst als "Renderfeld" auch einfach ein TPanel setzten. Dafür musst du einfach beim erstellen des Render-Context das TPanel.Handle statt dem TForm.Handle übergeben. Natürlich solltest du dann noch beim Viewport und co die Größe des Panels und nicht der Form übergeben . Aber an sonsten ist OpenGL nicht an ein Fenster gebunden.

Aber Achtung: soweit ich weiß funktioniert OGL nicht mit jedem TWinControl. Ich glaub TImage und TPaintBox sind solche Kandidaten. Jedoch ein einfaches TPanel oder selbet etwas mit TCustomControl erstellen funktionieren. Worauf du aber noch achten solltest: Wenn du mehrere Render-Contexte in einer Anwendung haben willst, musst du beim Zeichnen mit wglMakeCurrent immer den aktuell zu zeichnenden Render-Context auswählen. Wenn alle Rendercontexte Zugriff auf die gleichen Texturen, DisplayListen usw. haben sollen, musst du die Inhalte der RCs nocht wglShareLists [oder so ähnlich] miteinander verbinden.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: OpenGL ohne ein Fenster realisieren ?

  Alt 29. Aug 2008, 14:45
Die Sache ist die, ich habe kein Fenster, Form oder ein Panel zur verfügung.

Ich möchte per OpenGL nur auf ein Bitmap rendern um es für eine Vorschau zur
Verfügung zu stellen.

Ich habe zur Zeit eine Version die auf ein nicht sichtbares Fenter rendert.
Diese Lösung scheint mir aber unsauber.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#4

Re: OpenGL ohne ein Fenster realisieren ?

  Alt 29. Aug 2008, 14:50
Ich glaub nicht, dass das geht. Der Render-Context braucht ein HWND-Handle um zu funktionieren. Ich glaub mit der unsichtbaren Form fährst du ganz gut.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#5

Re: OpenGL ohne ein Fenster realisieren ?

  Alt 30. Aug 2008, 03:18
Juhuuuu ! Es klapt.

Man muss "nur" beim Pixelformatdescriptor PFD_DRAW_TO_BITMAP angeben.

Delphi-Quellcode:
// ...
  ZeroMemory(@pfd, sizeof(PIXELFORMATDESCRIPTOR));

  pfd.nSize := sizeof(PIXELFORMATDESCRIPTOR);
  // ...
  pfd.dwFlags := PFD_DRAW_TO_BITMAP or PFD_SUPPORT_OPENGL or PFD_SUPPORT_GDI;
// ...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: OpenGL ohne ein Fenster realisieren ?

  Alt 30. Aug 2008, 06:35
Zitat von littleDave:
Einen OpenGL-Renderkontext muss nicht unbedingt an ein Fenster gebunden sein. Du kannst als "Renderfeld" auch einfach ein TPanel setzten. Dafür musst du einfach beim erstellen des Render-Context das TPanel.Handle statt dem TForm.Handle übergeben.
Aus Sicht des OS Windows ist das eine und die selbe Sache, nämlich ein Fenster.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz