Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Nun, wenn du einen framebuffer dann als Rendering Target angibst... Warum nicht? Würde mich auch mal interessieren, dann könnte man die Hardwarebeschleunigung von Grafikkarten für kleine Tools nutzen (z.B. einer Bitmap nen Alphakanal hinzufügen), die in der Konsole laufen und daher kein wirkliches Fenster haben.
Gruß Lord 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: Sa Aug 18, 2007 18:47 Beiträge: 694 Wohnort: Köln
Programmiersprache: Java
Mh...dann muss ich mich mal mit den FBOs beschäftigen.
Ich dachte eher daran eine Art web-based-renderer zu machen. Sprich ein Objekt auf einem Webserver zu rendern. Allerdings wird es wohl daran scheitern, dass wohl die wenigstens server eine entsprechende Grafikkarte haben werden Wobei er ja ggf. in den Softwaremodus zurückfallen wird. Wenn der Treiber für irgendeine "billig"-OnBoard-Server-Graka überhaupt über solch eine Funktionalität verfügen wird.
_________________ Es werde Licht. glEnable(GL_LIGHTING); Und es ward Licht.
Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Du könntest ja von vornherein Mesa als "OpenGL-Treiber" laden, sodass er zwangsläufig im Softwaremodus rendert.
Ein anderes Problem dürften aber die Rechte auf dem Server sein, aber das gehört nicht hierher
Gruß Lord 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: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also ohne Render Context (RC) geht es nicht. Denn zum Ansteuern von egal welchen Funktionen wird der benötigt. Ansonsten weiß niemand, dass OpenGL benutzt werden soll. Für einen RC wird zwingend ein Device Context (DC) benötigt. Und ein DC klebt immer an einem Gerät. Also Bildschirm/Fenster.
Allerdings auch Konsolenanwendungen können Fenster erstellen. Nicht jedes Fenster muss aber sichtbar sein. Also mit CreateWindow erstellen und dann hat man ein HWND mit dem man arbeiten kann. So etwas wird man aber auch in jedem Fall mit Mesa benötigen.
Wenn man einen Kontext hat dann wäre da wohl das beste, wenn man mit Frame Buffer Objects arbeitet.
Alternativ zum Frame Buffer Object und dem RC kann man auch ein Windows spezifischen PixelBuffer verwenden. Das ist dann ein Speicherkontext. Man benötigt keinen zusätzlichen Kontext mehr und eventuelle Probleme, weil das Fenster nicht sichtbar ist gäbe es dann vermutlich nicht. Aber ich habe das bisher auch noch nicht gemacht.
PS: Gibt sicherlich noch andere Möglichkeiten. Fallen mir aber gerade nicht ein.
Nein, man kann einen DC auch für ein Bitmap haben, wenn man möchte - ein Fenster ist nicht notwendig. Jedenfalls klappte das unter Win3.11 noch wunderbar Und dann kann man mit dem RC auch blank in ein Bitmap rendern, aber den RC brauchste dann immernoch, aber ne Fenster ist nicht nötig - allerdings wollen nicht alle Grafikkarten in Bitmaps rendern und man muss beim RC erstellen auch die Bitte um das Bitmap mitanfordern - kann das nimmer auswendig, aber man kommt schon dahinter.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ähm. War etwas sehr unglücklich ausgedrückt. Vorher hatte ich ja gesagt Gerät. Es ist theoretisch auch möglich auf einen Drucker zu rendern, denn der hat auch nur einen DC. Aber in diesem Fall (dem klassische Fall) hängt der DC an einem Fenster. Aber ja es wäre auch denkbar in ein Bitmap zu rendern. Nur wie du schon angedeutet hast. Die meisten Treiber unterstützen es einfach nicht (mir ist keiner bekannt). Und dann landet man unweigerlich in der Implementation von Microsoft die zudem gerade mal so OpenGL 1.1 kann. Oder man benutzt gleich Mesa. Allerdings ist da die Frage ob man nicht doch lieber auf Hardwarebeschleunigung setzen will/sollte.
@damadmax: Wobei ich aber so im noch mal drüber lesen gestehen muss, dass ich keine Ahnung habe was du damit eigentlich bezwecken möchtest? Bin zum Anfang davon ausgegangen es soll lokal in der Konsole laufen. Aber Web Based, Client/Server? Es gibt auch diverse Projekte bei denen übers Netzwerk gerendert wird etc. Bzw für Linux in VMs gibt es auch einen OpenGL Treiber der die Aufrufe per TCP/IP zu dem Host Rechner schickt und dann die richtige Hardware benutzt und das Ergebniss wieder zurück zum Treiber schickt.
Also in ein Bitmap rendern dürfte doch kein Prob sein?
Das macht man ja in der WinAPI, wenn man das Flackern elemenieren möchte. Man erstellt einen MemDC, zeichnet da rein und blittet das dann in das Fenster. Und ein MemDC erstelle ich ja nun ohne ein Fenster zu haben.
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Mitglieder in diesem Forum: Bing [Bot] und 9 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.