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

Aktuelle Zeit: So Jul 13, 2025 14:28

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL für Windows benutzen?
BeitragVerfasst: So Nov 16, 2003 15:03 
Offline
DGL Member

Registriert: So Nov 16, 2003 14:49
Beiträge: 2
Halli-Hallo!

Ich habe vor ein etwas anderes Menü für Windows zu programmieren. Damit es auch gut aussieht, wollte ich ein bisschen AlphaBlending mit rein bauen und bin nun auf OpenGl gekommen.
Im großen und ganzen müsste ich nur ein paar Bilder beliebig auf den Bildschirm - ohne extra Fenster, sondern direkt über den Desktop - rendern können, deren Alphawert in einem anderen Bitmap als Grustufenwert steht (um auch gleichzeitig Antialiasing hinzubekommen).
Kann man das auch irgendwie mit Delphi und OpenGL lösen? Bisher habe ich immer nur Beispiele gefunden, die in einem extra Fenster laufen und somit eigentlich vom restlichen Außenrum abgeschottet sind.

Danke im Vorraus!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 16, 2003 15:21 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn du die normale Funktionalität des Desktops beibehalten willst, wird dein Unterfangen nicht sonderlich einfach.
Wenn das nicht so sein muss, dann kannst du den Desktop ganz einfach in eine Textur kopieren, deine Anwendung im Vollbildmodus laufen lassen und dann diese Textur als Hintergrund für dein Programm nutzen. Dann musst du nur noch im Ortho-Modus via Alpha-Blending deine Menüs drüberrendern, aber wie gesagt hast du dann nicht die Windowsfunktionalität, alos z.B. Icons verschieben. Das müsstest du dann alles selbst handhaben und dann auch dementsprechend die Textur aktualisieren.

Besser wäre es, wenn du ein rahmenloses Fenster nimmst das deiner Menügröße entspricht, den Desktopinhalt darunter in eine Textur kopierst und diese dann als Anwendungshintergrund verwendest um darauf dein Menü zu blenden. So hast du z.B. nicht das Problem, das dem Nutzer die Standardfunktionen des Desktops nicht mehr zur Verfügung stehen. Andererseits wirds dann recht problematisch mehrere Menüs gleichzeitig darzustellen. (Im Endeffekt entweder größeres Fenster mit größerer Textur, oder pro Menü eine eigene Anwendungsinstanz)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 17, 2003 19:53 
Offline
DGL Member

Registriert: So Jun 23, 2002 12:37
Beiträge: 144
Programmiersprache: C/C++, Delphi
Du kannst auch einfach den Gerätekontext vom Desktop holen
und damit den Renderingkontext bilden.
Code:
  1. h_dc:=GetDC(0);
  2. h_rc:=wglCreateContext(h_dc);


Wenn du dann den Renderingkontext aktivierst kannst du ganz einfach auf dem Desktop deine Szene rendern. Allerdings werden Taskleiste und alle Symbole nicht mehr dargestellt. Wenn du dann die gewohnte funktionalität des Desktops weiterhin haben möchtest musst du dir noch was überlegen.

_________________
--->ladida<---


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 18, 2003 07:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich habe da noch etwas anderes gefunden. Vielleicht hilft dir das ja ein wenig. Es hanndelt sich dabei um 2 Programme die auf den Desktophintergrund zeichnen. Die Symbole etc. bleiben komplett erhalten. Da du aber vor hast das Menü zu verändern müsstest du dies eigentlich komplett nach programmieren und anstelle des Originalen setzen. Von daher weiß ich nicht ob dir die Programme überhaupt helfen können. Da ich selber bisher auch noch nicht die Zeit und Muse hatte mir das anzuschauen weiß ich selber noch nicht mal so genau ob man damit tatsächlich OpenGL rendern kann.

Diese Attachments zeichnen wohlö direkt (per GDI) auf den Desktop.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 18, 2003 07:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Und diese verwenden wohl Overlay.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 19, 2003 16:05 
Offline
DGL Member

Registriert: So Nov 16, 2003 14:49
Beiträge: 2
Mit OpenGL scheint es dann wohl doch nicht so einfach zu gehen. Ich wollte es ja zu erst mit der GDI+ machen, nur habe ich da auch keinen gescheiten Ansatz gefunden. Die Demos (besonders drawtest) sind ganz gut. Ich werd mal schauen ob man da auch einen Alphawert reinbringen kann. Ansonsten muss ich mich mal mehr mit der GDI+ beschäftigen, oder es ganz anders machen ... vielleicht mit DirectX :? .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 19, 2003 17:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also wenn es keine besonders großen Flächen sind, dann kann man so etwas auch mit mehr oder weniger Aufwand auch selber machen. Also eine Art eigenes Bitmap. Es gibt da so ein paar Sachen. Das hier jetzt zu erklären wäre aber zu viel. An eine Hardwarebeschleunigung würde es aber auch nicht rankommen. Aber sofern man es nicht permanent neu berechnen müsste und es nicht gleich über den gesamten Bildschirm gehen würde wäre es durchaus möglich. Aber du solltest schon schauen ob du das nicht vielleicht doch mit OpenGL oder so machen könntest.

PS: Mit OpenGL kann man auch in Bilder rendern. Und die könnte man dann per GDI zeichnen. Bzw. kannst du recht einfach aus OpenGL ein Bild machen.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]