AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Opengl - Ratlos -

Ein Thema von Mr.borland · begonnen am 12. Okt 2007 · letzter Beitrag vom 12. Okt 2007
Antwort Antwort
Seite 2 von 2     12   
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#11

Re: Opengl - Ratlos -

  Alt 12. Okt 2007, 16:05
OnShow ist genau der falsche Ort dafür, da diese Methode jedesmal gerufen wird, wenn das Formular sichtbar wird. Du willst aber sicher nur einen RC. Entweder Du merkst Dir in einem Boolen, ob das Fenster schonmal sichtbar war, oder du machst das im CreateWnd;
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#12

Re: Opengl - Ratlos -

  Alt 12. Okt 2007, 16:09
... aber wenn ich das fenster schließe mache ich folgendes

Delphi-Quellcode:
// Release OpenGL when window closes
procedure TFormOpenGl.FormDestroy(Sender: TObject);
begin
  wglMakeCurrent(0,0);
  wglDeleteContext(rcPointer);
  releasedc(GlPanel.Handle,dcPointer);
end;
das heißt ich muss jedesmal einen Rendering Context definieren. oder nicht??!
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#13

Re: Opengl - Ratlos -

  Alt 12. Okt 2007, 16:16
OnShow korrespondiert doch aber mit OnHide, während FormDestroy mit FormCreate korrespondiert. Oder so.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#14

Re: Opengl - Ratlos -

  Alt 12. Okt 2007, 16:44
Zitat:
OnShow korrespondiert doch aber mit OnHide, während FormDestroy mit FormCreate korrespondiert. Oder so.
das stimmt. jedoch ist in meine Anwendung nur eine formuar mit der Hauptformular sichtbar verknüpft.

wenn ich das fenter brauche, mache ich im Hauptformular folgendes:
Delphi-Quellcode:
FormOpenGl := TFormOpenGl.Create(self);
  FormOpenGl.Parent := Self;
  FormOpenGl.Align := alClient;
  FormOpenGl.Visible := true;
das formular wird wenn es nicht mehr benötigt wird zerstört.
Delphi-Quellcode:
      if FormOpenGl <> Nil then begin
    FormOpenGl.Visible := false;
    FormOpenGl.Close();
     FormOpenGl.Free();
    FormOpenGl := Nil;
   end;
somit gibt es keine konflikte, meine ich zumindest??!
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Opengl - Ratlos -

  Alt 12. Okt 2007, 17:01
Zitat von Sidorion:
OnShow ist genau der falsche Ort dafür, da diese Methode jedesmal gerufen wird, wenn das Formular sichtbar wird.
Also musst du nur dein Fenster minimieren und wieder hervorholen und du hast einen zweiten Rendering Context und wahrscheinlich ein Speicherleck.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Mr.borland

Registriert seit: 16. Mai 2007
Ort: Plüderhausen
34 Beiträge
 
#16

Re: Opengl - Ratlos -

  Alt 12. Okt 2007, 17:37
Zitat:
Also musst du nur dein Fenster minimieren und wieder hervorholen und du hast einen zweiten Rendering Context und wahrscheinlich ein Speicherleck.
... dafür habe ich BorderStyle:=bsNone; gesetzt

des heißt der user kann zwar das Hautformular schließen und somit das programm beenden aber nicht das OpenGlFormular.

in meine Anwendung ist nur eine formular gleichzeitig mit der Hauptformular sichtbar verknüpft!!!
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#17

Re: Opengl - Ratlos -

  Alt 12. Okt 2007, 17:53
Zitat von Apollonius:
Zitat von Sidorion:
OnShow ist genau der falsche Ort dafür, da diese Methode jedesmal gerufen wird, wenn das Formular sichtbar wird.
Also musst du nur dein Fenster minimieren und wieder hervorholen und du hast einen zweiten Rendering Context und wahrscheinlich ein Speicherleck.
Das stimmt aber nicht. OnShow wird immer dann aufgerufen wenn das Fenster sichtbar wird (Show / ShowModal). Ja das Stimmt. Aber wenn es minimiert wird dann ist es minimiert. Das Fenster ist trotzdem noch sichtbar.

Ich benutze bei mir eigentlich ausschließlich OnShow und OnClose und hatte damit bisher noch nie Probleme. OnHide wird nämlich nicht aufgerufen, wenn das Fenster geschlossen wird. Klar wenn dann noch einmal OnShow aufgerufen wird dann muss man das entweder per Flag abfangen oder man hat einen zusätzlichen Kontext. Aber .Hide steht normal nur im Code weswegen man darüber eigentlich eine ganz gute Kontrolle haben sollte. Und wenn das Fenster geschlossen wird dann wird OnClose aufgerufen.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Opengl - Ratlos -

  Alt 12. Okt 2007, 18:01
Da tritt mich doch ein... Sorry, du hast recht. OnShow wird wirklich nicht beim Hervorholen auferufen. Ich hatte das irgendwie anders in Erinnerung.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:34 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