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

Aktuelle Zeit: Mo Jul 21, 2025 00:00

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 03:04 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich hab in meinem Programm 2 Fenster in denen OpenGL dargestellt wird.
Also habe ich auch 2x einen RenderContext :)

Mein problem jetzt... in Fenster A erstelle ich eine Textur, welche ich gern in Fenster B benutzen möchte.

Geht das irgendwie??? (Es muß gehen, da div. Programme das machen)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 03:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Oder ist die einzige lösung hierfür, bei beiden Fenstern den selben RenderContext (HGLRC) zu benutzen???


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 09:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Im Normalfall mußt du nichts machen, wenn du in zwei verschiedenen Renderkontexten die selben Texturen nutzen willst.Davon mach ich öfters Gebrauch, und man muß dafür keine besonderen Befehle aufrufen.
Worauf du vielleicht achten mußt : Erstelle beide Renderkontexte vor dem Laden der Texturen und aktiviere in beiden Renderkontexten Texturemapping via glEnable(GL_TEXTURE_2D).
Wenn du allerdings Displaylisten in zwei Renderkontexten nutzen willst, musst du einmal den Befehl wglShareLists(RC1,RC2) aufrufen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 15:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Mhh...

bei mir funktioniert's nicht.

Wenn ich in Fenster A ne Textur aus Fenster B nutzen will, bekomm ich nur ne weiße fläche.. (Ja, GL_TEXTURE_2D ist in beiden Fenstern aktiviert!)

Fenster A:
Code:
  1. var
  2.   DCA: hDC;
  3.   HRCA: HGLRC;
  4.  
  5. procedure Form1.OnCreate...
  6. begin
  7.   DCA:=GetDC(FormA.Handle);
  8.   SetDCPixelFormat(DCA);
  9.   HRCA:=wglCreateContext(DCA);
  10.   wglMakeCurrent(DCA,HRCA);
  11. end;


Fenster B:
Code:
  1. var
  2.   DCB: hDC;
  3.   HRCB: HGLRC;
  4.  
  5. procedure Form2.OnCreate...
  6. begin
  7.   DCB:=GetDC(FormB.Handle);
  8.   SetDCPixelFormat(DCB);
  9.   HRCB:=wglCreateContext(DCB);
  10.   wglMakeCurrent(DCB,HRCB);
  11. end;


Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 15:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich weiss zwar nicht obs was bringt, aber AFAIK musst du bevor du dein texturiertes Objekt im Kontext B zeichnest erst Kontext A deaktvieren.So mach ichs, und so funktioniert das Nutzen der Texturen in verschiedenen Renderkontexten ohne Probs.Also ungefähr so :
- Kontext A aktivieren
- Texturierte Objekte A zeichnen
- Kontext A deaktivieren
- Kontext B aktivieren
- Texturierte Objekte auf B zeichnen
- Kontext B deaktivieren

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 15:59 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ja, so mache ich es ja... klappt auch alles wunderbar, nur das ich halt eine Textur aus KontextB nicht in KontextA benutzen kann... :(

Au'revoir,
Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 16:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Welche OpenGL-Unit verwendest du eigentlich?Ich benutze die von Mike Lischke und aktiviere den Kontext via ActivateRenderingContext(DC,RC) und aktiviere in bevor ich zum zweiten Kontext schalte mittels DeActivateRenderingContext.Das macht absolut keine Probs und klappt einwandfrei, wie auf folgendem Screenshot aus dem neuen NapalmEdit zu sehen :
Bild
In Fenster 1 (großes Fenster) wird die Map gerendert, und rechts im zweiten Fenster wird auf nem Panel (extra Kontext) das 3D-Modell des gewählten Objekts gezeichnet.Ich mach das mit den Kontexten genauso wie ichs beschrieben hab.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 16:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Ja,

genauso mache ich es ja.. also mit AcitvateRenderingContext, Deactivate.. etc.. ;)

Ich hab sowas mit 2 Fenstern ja frühe auch schon div. male gemacht, aber da habe ich für beide fenster immer den gleichen HGLRC benutzt.

(Was doch eigentlich irgendwie auch unlogisch ist wenn man da 2 verschiedene benutzt, oder??? Wenn ich die Texturen von jedem RenderContext benutzen kann, würde ich so ja aufeinmal auch die von anderen OpenGL Programmen benutzen können...?)

Au'revoir,
Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 11, 2003 19:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
So mache ich das z.Z. beim Rendern..

Code:
  1. wglMakeCurrent(dcA,hrcA);
  2. ActivateRenderingContext(dcA,hrcA);
  3. //Inhalt von A.. hier wird auch die Textur erstellt.
  4. DeactivateRenderingContext(dcA,hrcA);
  5. wglMakeCurrent(dcB,hrcB);
  6. ActivateRenderingContext(dcB,hrcB);
  7. //Inhalt von B, hier wird die Textur die in A gemacht wurde gebraucht..
  8. DeactivateRenderingContext(dcB,hrcB);


Aber alles was ich als Textur in FormB bekomme ist ne Weiße fläche... :(

Au'revoir,
Aya~

PS: Für mich ist es nach wie vor unlogisch das ich von RenderContext A auf eine Textur von RenderContext B zurückgreifen kann... das hieße ja auch das ich wenn Maya gestartet ist, auf ne Textur aus dem RenderContext von Maya zurückgreifen könnte...?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 12, 2003 09:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
So...hab grad versucht ein Sample zu coden das ich dir dann schicken wollte, und hatte dann eigenartigerweise das selbe Problem wie du : Fenster 1 -> Quad mit Textur, Fenster 2 -> Weisses Quad.

Hab dann aber nach dem Erstellen der Kontexte und dem Laden der Texturen den Befehl wglShareLists(RC1,RC2) (Probieren geht ja bekannterweise über Studieren) aufgerufen, und danach gings.War bisher eigentlich der Annahme, man bräuchte diesen Befehl nur um die Displaylisten (wie der Name vermuten lässt) zwischen zwei Kontexten benutzen zu können, wie es auch im MSDN steht : <a href='http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/ntopnglr_6flf.asp' target='_blank'>http://msdn.microsoft.com/library/default....opnglr_6flf.asp</a>

Allerdings hats nach dem Hinzufügen dieses Befehls tadellos geklappt...in beiden Fenster wird jetzt das Quad mit der selben Textur dargestellt.Füg den also mal in dein Programm ein, und schon sollte es gehen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 12, 2003 16:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ok, werd ich nachher mal versuchen :)
Danke *knuddl*

Au'revoir,
Aya~

//Edit:
Jep, klappt :lol:


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.008s | 14 Queries | GZIP : On ]