Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Du hast also ein normales Fenster (TForm) mit einem OpenGL-Kontext der die ganze Form bedeckt und das Fenster ist transparent? Wenn ja, dann vergiss es. Sowas ist im OpenGL-Standard nicht vorgesehen und wird in den seltensten Fällen funktionieren.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
EWeiss hat geschrieben:
Nein ich habe ein API Fenster welches über CreateWindowEx erstellt wird also zwei davon.
Spielt keine Rolle, TForm kapselt das ja letztendlich. Mir gings drum ob du normale Fenster hast oder eigene in einer OpenGL GUI. Da es aber normale Windowsfenster sind wirst du da vergessen können. Transparente Fenster + OpenGL sind eigentlich ein Nogo. Wundert mich dass es bei dir überhaupt teilweise funktioniert, aber man sollte davon die Finger lassen, die meisten Implementationen unterstützen dass eh nicht.
Sowas macht man dann sowieso über eine eigene GUI. Also ein OpenGL-Fenster und da renderst du dann einfach eigene Fenster drin über eine selbstgebaute GUI.
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
EWeiss hat geschrieben:
Sascha Willems hat geschrieben:
EWeiss hat geschrieben:
Nein ich habe ein API Fenster welches über CreateWindowEx erstellt wird also zwei davon.
Spielt keine Rolle, TForm kapselt das ja letztendlich. Mir gings drum ob du normale Fenster hast oder eigene in einer OpenGL GUI. Da es aber normale Windowsfenster sind wirst du da vergessen können. Transparente Fenster + OpenGL sind eigentlich ein Nogo. Wundert mich dass es bei dir überhaupt teilweise funktioniert, aber man sollte davon die Finger lassen, die meisten Implementationen unterstützen dass eh nicht.
Sowas macht man dann sowieso über eine eigene GUI. Also ein OpenGL-Fenster und da renderst du dann einfach eigene Fenster drin über eine selbstgebaute GUI.
Ich habe eine eigene "GUI" die in keinerweise irgend etwas mit TComponente/TForm oder ähnliche ableitungen hat. Aufgebaut auf API-Win32.. NonVcl.
Ich weiss auch nicht was da so schwer ist das Window Transparent zu machen das sind reine Speicheroperationen Bild in Speicher kopieren BitBlt und fertig. Das ist auch nicht mein problem das es geht siehst du ja sondern das ich es nicht verschieben kann. Von Hand ja! Aber nicht mit den genannten API Funktionen.
Zitat:
Für jeden Pixel darf laut MS nur ein HWND existieren.
Hab auch nichts anderes
gruss
Dann hast du keine 2 Fenster auf deinen Screenshot
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Drück dich doch mal bitte etwas konkreter aus. Du hast also ein OpenGL-Fenster und darüber ein normales Fenster ohne OpenGL-Kontext, welches halbtransparent über dem OpenGL-Fenster liegt? Und das kannst du nicht verschieben wenn du es mit der Maus anpackst? Wenn ja, dann hat das ja mit OpenGL direkt nix zu tun?
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
wenn dem so ist wie Sasha sagt dann verstößt du gegen die Win API da du versuchst einen Pixel mehere HWNDs zuzuweisen. Was du machen könntest wäre entweder den entsprechenden GL Bereich in ein Bitmap zu kopieren und die Transparenz im 2. Fenster zu simulieren. Oder du verzichtest auf die Events vom 2. Fenster und kopierst dessen Bitmap in eine GL Textur. Ansonsten normales Blending gibts unter Windows zwischen verschiedenen Fenstern nicht.
[edit]
oder du setzt den "Alphakanal" auf monochrome Werte.
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Sagens mal, weißt du überhaupt warum im ersten Nehe Tutorial zum Beispiel direkt auf solche Sachen wie WS_CLIPCHILDREN hingewiesen wird? oder warum GTK Anwendungen häufig die Desktop effekte deaktivieren?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
yunharla hat geschrieben:
oder warum GTK Anwendungen häufig die Desktop effekte deaktivieren?
Das interessiert mich. Bei mir tun sie das nicht (Linux ).
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
EWeiss hat geschrieben:
yunharla hat geschrieben:
Sagens mal, weißt du überhaupt warum im ersten Nehe Tutorial zum Beispiel direkt auf solche Sachen wie WS_CLIPCHILDREN hingewiesen wird? oder warum GTK Anwendungen häufig die Desktop effekte deaktivieren?
Warum die das tun liegt im ermessen jedes einzelnen. Hift mir aber nicht wirklich weiter ob die nun genug resourcen zur verfügung haben oder nicht. Für meinen Geschmack möchte ich etwas für's Auge deshalb käme so ein System wie Win8 bsp. für mich auch nicht in frage. Das ist dann eher was für Leute die wie du schreibst eh alles Ausschalten.
Wenn ich möglichkeiten habe in OpenGL die ich nutzen kann dann tue ich das.
gruss
Also kp aber wenn dir ein standart Werk zu GL wie Nehe dir ein dickes
Zitat:
REQUIERED
an den Kopf knallt und ein anderes standart Werk zu Windows wie MSDN dir sagt "lass es sonst...
Zitat:
draw any child HWND yourself, including dialogs and dropdowns (seit Vista übrigens auch Fonts etc.)
(mhhh woran erinnert mich das gerade??? ) macht dich das nicht ein klein wenig nachdenklich? so nach dem Motto "hey, ich hab da nicht wirklich ne Wahl weil sonst wirds böse"
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Mein lieber der Artikel den ich da zitiert habe geht um zwei Child HWNDs die man untereinander auf einen gemeinsamen Parent HWND vermischt, in deinen Fall ist der nächsthöhere Parent mit hoher wahrscheinlichkeit aber HWND 0 (also der Desktop). Wenn du also einen Overlay effekt erstellen willst bleibt dir nur (wie übrigens gleich zum Anfang erwähnt) eines der beiden HWNDs als Parent des anderen zu nutzen oder ein neues gemeinsames HWND, in dem beide Passen, zu nutzen um den Effekt, wie im Artikel beschrieben, selbst umzusetzen, oder den Effekt auf monochrome (nicht greyscale) Werte zu beschränken (HRGNs).
[edit] es gäbe eventuell noch die Möglichkeit einen Hack mit Hilfe des Fensterrahmens zu basteln (der IE kann ja es anscheinend), allerdings keine Ahnung ob und wie usw. man damit dann auch wirklich arbeiten könnte.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Nein ernsthaft, warum tun sie das? Ich würd das gern mal wissen. Ich habe ja auch meine Ursprünge in Windows .
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
EWeiss hat geschrieben:
Lord Horazont hat geschrieben:
Nein ernsthaft, warum tun sie das? Ich würd das gern mal wissen. Ich habe ja auch meine Ursprünge in Windows .
grüße
Habe ich doch schon gesagt. Der eigenen befriedigung wegen und weil ich nicht nur stupid etwas erstellen will sondern auch freude mit meinen Projekten empfinden möchte.
Sorry, das ging nicht an dich sondern an yunharla. Normalerweise Sieze ich Leute hier nicht
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
naja was ich mich jetzt bei dem Bild mit der Klampfe frage ist: warum nicht einfach ein sehr kleines GL widget/fenster nutzen um in ein FBO zeichnen lassen und diesen kopieren und anschließend als Bitmap ausgeben? das bissl Performance dürfte doch egal sein.
Mitglieder in diesem Forum: Bing [Bot] und 13 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.