ist es möglich einen OpenGL Kontext zu erstellen ohne Fenster? Quasi in eine Textur oder Buffer rendern. Um gewisse Grafikdinge zu umschiffen und OGL zu misshandeln eine Aufgabe für mich zu erledigen ohne Algorithmen in bspw. OpenCL oder dergleichen schreiben zu müssen.
Ich denke eher nicht, dass an der Stelle ein Bitmap Handel akzeptiert wird.
Möglich ist es aber auf jeden Fall. Dabei renderst du dann am besten über ein FBO in eine Textur. Allerdings ist es möglicherweise kniffelig einen Kontext aufzukommen, ohne ein Fenster zu haben. Dann wirst du wahrscheinlich auch direkt mit WGL(Windows) oder GLX(X also zum Beispiel Linux, BSD und fast alle anderen Systeme) den Context eröffnen müssen. Möglicherweise ist es auch sinnvoll ein kleines unsichtbares Fenster aufzumachen, nur damit der Treiber und das Betriebssystem glücklich sind. Hier wird vorgeschlagen, den Context auf Windows an das Desktopwindow zu packen: http://stackoverflow.com/questions/576896/can-you-create-opengl-context-without-opening-a-window http://www.opengl.org/wiki/Creating_an_OpenGL_Context
http://www.opengl.org/wiki/Creating_an_OpenGL_Context hat geschrieben:
- Creating a context without a window, for off-screen rendering. This may not actually work.
Mit einem Trick wie unsichtbares Fenster oder Desktophandel geht es aber bestimmt!
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das Rendern in ein Bitmap klappt rein technisch schon, allerdings bekommt man dann zumindest unter Windows nur einen minimal Software-Renderer mit OpenGL 1.0 Features. Kann man also komplett vergessen.
Einen echten Weg unter Windows ohne Fenster einen OpenGL-Kontext zu erzeugen gibt es nicht. Mit EGL, das einige IHVs ja über Extensions anbieten ist sowas evtl. möglich (afaik kann man das bei AMD), aber doch recht speziell.
Ansonsten kann man es einfach mal mit dem Handle des Desktops versuchen, oder einfach ein verstecktes Fenster ganz ohne Taskleisteneintrag bauen. Wäre der vermutlich einfachste Weg.
Oder mal bei Mesa schauen, dass wäre dann aber auch Software.
Was genau willst du den "umschiffen". Komplexe Berechnungen (weil du von OpenCL redest) gehen ja unter OpenGL erst mit Compute Shadern, und da gewinnt man eigentlich nix, da ist man rein vom Drumherum mit OpenCL schneller am Ziel und muss sich nicht mit den brandneuen, fehlerbehafteten Compute Shader Implementationen der IHVs rumschlagen (leidvolle Erfahrung).
Welchen neuen APIs und Frameworks von MS? Was auch immer du damit meinst, wahrscheinlich werden diese nur auf Windows arbeiten und SDH.Prod möchte möglicherweise Platformunabhänigkeit.
Prinzipiell erstelle ich meine OpenGL Contexte in C++ mit GLFW3. Allerdings wirst du, soweit ich weiß, damit keinen Context direkt ohne Fenster herausbekommen. Dann wirst du mit dem Betriebssystem APIs arbeiten müssen. Also dem des entsprechenden Windowsystems und der OpenGL Contextextension. Auf Windows wäre das WGL und die WinAPI um ein unsichtbares Fenster/das Desktophandel zu bekommen. Auf Linux GLX.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn du nicht unbedingt Hardwarebeschleunigung brauchst, ist Cairo eventuell hilfreicher. Das kann alle Bildoperationen, die man sich so vorstellen kann.
viele Grüße, Horazont
_________________ 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
OpenglerF hat geschrieben:
Welchen neuen APIs und Frameworks von MS? Was auch immer du damit meinst, wahrscheinlich werden diese nur auf Windows arbeiten und SDH.Prod möchte möglicherweise Platformunabhänigkeit.
Prinzipiell erstelle ich meine OpenGL Contexte in C++ mit GLFW3. Allerdings wirst du, soweit ich weiß, damit keinen Context direkt ohne Fenster herausbekommen. Dann wirst du mit dem Betriebssystem APIs arbeiten müssen. Also dem des entsprechenden Windowsystems und der OpenGL Contextextension. Auf Windows wäre das WGL und die WinAPI um ein unsichtbares Fenster/das Desktophandel zu bekommen. Auf Linux GLX.
Nun WPF, WinRT und co. Aber naja X-Platform, ist damit dann natürlich ein Problem. lol
WPF ist ein GUI Framework und für andere Zwecke nicht ausgelegt bzw. auch langsam. Außerdem läuft es in einer managed Umgebung mit Net und nicht mit nativen C++. WinRT ist laut Wikipedia "die Laufzeitumgebung für Windows Store-Apps in Windows 8". Ob man damit überhaupt rendern kann, oder gar Offscreen und dann mit Hardwarebeschleunigung, weiß ich auch nicht.
Die beiden Libs die du genannt hast, sind jedenfalls nicht für diesen Zweck entworfen worden. Typische geeignete Windowslösungen dafür würde ich eher mit Direct3D oder Direct2D sehen. Sooo neu sind die aber nicht. (WPF ist eigentlich auch nicht mehr so neu.)
Also wenns nur für Windows ist würde es in diesem Fall ausreichen, Plattformunabhängigkeit ist also nett, aber nicht zwingend.
Eigentlich muss es nicht OpenGL sein, aber es würde Einarbeitungszeit ersparen da ja schon etwas Erfahrung und ein RedBook vorhanden ist.
Hardwarebeschleunigt sollte es schon sein, geht ja nur um die eine Funktion und ohne Beschleunigung könnt ich es vermutlich auch selbst schnell mal so nebenbei implementieren, wäre dann aber halt nur nicht schnell. Daher auch der Verzicht auf das Fenster, das würde nur unnötige Ressourcen verbrauchen. Geht wie gesagt erstmal nur um die Drehung eines Bildes.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
SDH.Prod hat geschrieben:
Hardwarebeschleunigt sollte es schon sein, geht ja nur um die eine Funktion und ohne Beschleunigung könnt ich es vermutlich auch selbst schnell mal so nebenbei implementieren, wäre dann aber halt nur nicht schnell. Daher auch der Verzicht auf das Fenster, das würde nur unnötige Ressourcen verbrauchen. Geht wie gesagt erstmal nur um die Drehung eines Bildes.
Willst du mehr als zwanzig Bilder pro Sekunde rotieren? Wenn nein brauchst du keine Hardwarebeschleunigung, sondern lediglich eine gescheite (also nicht mal eben runtergeschriebene) Implementation. Da reichen die gängigen Grafiklibs wie GDI+ (oder wie das Windowszeug heißt) oder Cairo.
viele Grüße, Horazont
_________________ 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
Mitglieder in diesem Forum: 0 Mitglieder und 80 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.