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

Aktuelle Zeit: Do Jul 17, 2025 23:52

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



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Feb 07, 2005 14:53 
Offline
DGL Member

Registriert: Di Feb 01, 2005 15:59
Beiträge: 14
Wohnort: nähe Stuttgart
Hi dglFolks,

Ich habe ein Problem beim Umstieg von OpenGl12 nach dglOpenGL.

Folgender Fall liegt vor: In einem Fenster kann zwischen einer 2D Darstellung und einer 3D Darstellung gewechselt werden.
Beim ersten Erzeugen des Rendering-Contexts geht sowohl unter OpenGL12 als auch unter dglOpenGL noch alles glatt.
Beim Wechsel zurück in die 2D Darstellung wird der Renderkontext gelöscht. Nun soll beim nächsten Wechsel in die 3D Darstellung der Renderkontext erneut erzeugt werden. Unter OpenGL12 funktioniert es, in dglOpenGL liefert der Aufruf der Funktion wglCreateLayerContext in der Funktion CreateRenderingContext 0 zurück und löst somit einen RaiseLastOSError aus.
Benutzt man in dglOpenGL die windows-unit von delphi, und nutzt dann windows.wglCreateLayerContext funktioniert es wieder, was aber nicht wirklich als workarround angesehen werden kann.

Dies wurde auf 2 Rechnern getestet. Beide haben Windows 2000 und SP4 installiert.
Das Phänomen trat aber nur auf dem neueren / schnelleren der beiden Rechner auf welchem eine ATI Radeon installiert ist.
Der ältere Rechner hat eine Matrox Millenium 450G, auf diesem funktioniert der 2D/3D wechsel auch mit dglopengl reibungslos.

Vielleicht könnte mir hier jemand weiterhelfen? Ich würde sehr gerne auf OpenGL 1.5 umsteigen, solang dieses Problem aber nicht verstanden ist, bleibt mir dies verwehrt.


Grüße aus Stuttgart,
Peter


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 14:57 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Am einfachsten wäre es ja den Context beim Wechsel des Anzeigemodus nicht neu zu erstellen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 14:58 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Genau. Leg einfach 2 Variablen für die RC an und binde die dann mittels ActivateRenderingcontext je nach bedarf.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 15:09 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Ich meinte eigentlich, benutze nur einen RC und zeichne dort sowohl 2D als auch 3D. Für 2D mit OpenGL gibt's hier auch ein umfangreiches Tutorial.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 15:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Was? Wozu denn gleich zwei RC's? Du kannst doch mittels eine Booleans festlegen in welcher der Ansichten du dich befindest (2D / 3D) und dem entsprechenden setzt du eine Perspektive oder den Orthomodus. Dazu musst man keinen RC löschen. Du kannst ja genau wie du sonst die Perspektive setzen auch einfach zwischendurch dann mal den Orthomodus setzen und schon isses 2D.

[edit] So ähnlich wie das bei HUD's gelöst ist. Dort wird ja wärend der 3D Darstellung in die 2D Darstellung gewechselt und wiederzurück. Nur das du in dem Fall halt gleich die 3D auslässt.


Zuletzt geändert von Lossy eX am Mo Feb 07, 2005 15:13, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 15:11 
Offline
DGL Member

Registriert: Di Feb 01, 2005 15:59
Beiträge: 14
Wohnort: nähe Stuttgart
Ok, aber das erklärt mir trotzdem nicht warum der Aufruf von wglCreateLayerContext über die Windows-Unit funktioniert während die Funktion die sich dglopengl holt nicht klappt. Beide greifen doch auf die gleiche opengl32.dll zu, oder nicht?
Was passiert wenn ich das jetzt so lasse und an dieser stelle die Funktion der Windows-unit verwende, während ich sonst weiterhin die wgl-Funktionen, die mir dglopengl.pas bereitstellt, verwende?

Grüße aus Stuttgart,
Peter


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 15:16 
Offline
DGL Member

Registriert: Di Feb 01, 2005 15:59
Beiträge: 14
Wohnort: nähe Stuttgart
@Lossy Ex

Der 2D View ist nicht OpenGL, sondern was eigenes. Hier können 2D Zeichnungen erstellt werden, die dann in 3D Modelle umgerechnet werden und dann in OpenGL angezeigt werden. Das ganze ist schon über einige Jahre gewachsen, wir wollen jetzt eben auch die Features von OpenGL 1.5 im 3D Modus nutzen, deshalb der Umstieg jetzt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 15:21 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Dann render in ein extra Panel mit OpenGL verstecke nur das Panel beim Wechsel. Dann bleibt der RC erhalten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hmmm. Das wäre nützliches Hintergrundwissen gewesen. ;-)

Aber zurück zu deinem Problem. Und ja die greifen alle drei auf die selber Dll zu. Davon gibt es ja nur eine. Machst du sonst noch etwas mit der dglOpenGL?
Ich habe mir nämlich gerade mal alle 3 Versionen angesehen.
- Windows bindet die Methode statisch ein.
- OpenGL12 bindet dieses Mittels GetProcAddress ein
- dglOpenGL bindet diese Mittels wglProcAddress ein und sollte das nicht geklappt haben dann mittels GetProcAddress.

Das wundert mich ein wenig, dass es nicht klappt. Aber sonst könntest du auch die wglCreateLayerContext auf der Unit Windows benutzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 21:36 
Offline
DGL Member

Registriert: Di Feb 01, 2005 15:59
Beiträge: 14
Wohnort: nähe Stuttgart
Ok, dann Dank ich erstmal :)

Werds nun erstmal lassen.

Macht weiter so Jungs :)

Grüße aus Stuttgart,
Peter


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 00:34 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
MightyPit hat geschrieben:
Ok, dann Dank ich erstmal :)
Grüße aus Stuttgart,
Peter

Hey cool, du wohst in der Nähe von mir. Aber ich will jetzt ja nicht OffTopic werden ;)

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 01:28 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Zu meiner Rechtfertigung: Ich dachte mir, das er zwei verschiedene Zeichenflächen benutzt, denn es klang ziemlich nach 3D Modellierer o.Ä. .Deshalb das mit den zwei RCs. 8)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 09:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Macht ja nichts. Ich habe es ja auch anders verstanden als es dann tatsächlich war. Ich glaube so hat jeder das verstanden was er verstehen wollte. ;-)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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 | 15 Queries | GZIP : On ]