Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
Hi, ich habe mich mal im Netz umgeschaut und festgestellt, dass man OpenGl über weitere dll auch in C# nutzen kann. Dummerweise bin ich nich in der Lage gewesen anhand der im Netz verfügbaren Tutorials ein Projekt tatsächlich mit OpenGl zum laufen zu bekommen. Genauer gesagt habe ich mir das Tao-Framework angesehen und festgestellt, dass einige Funktionen nicht aufzufinden sind, wie zum Beispiel die nötigen Funktionen um einen Rendering- oder DeviceContext zu erstellen/anzufordern.
Meine Frage ist, ob jemand damit Erfahrung gemacht hat und, ob er mir einen Guide oder ein Template an die Hand geben kann mit dem ich die Funktionsweise für Tao basierende OpenGl Projekte nachvollziehen kann.
Da ich in Delphi auf selbe Weise angefangen hab (erstma ein Template benutzen und Stück für Stück zerpflücken) bin ich zuversichtlich, dass mich das weiter bringen wird. Der ansporn dazu ist die Idee, mit einem Komillitonen einen GTA1-Klon zu schreiben, der allerdings etwas primitiver sein soll. Da er nur Kenntnise in Java, C++ und C# hat, und ich in Delphi, C++ und C# wollten wir uns auf eine gemeinsame Sprache einigen, allerdings nicht im altbacken C++ arbeiten. Da ich aber für den grafischen Teil zuständig sein werde und er für die Netzwerk-Kommunikation muss ich nun OpenGl für C# anwendbar machen.
Ich habe natürlich schon vom Tao Framework gehört, aber ich sehe es jetzt zum ersten mal. Du hast Glück: ich nehme jetzt mal an, dass es wachsen wird, denn man hat sich offenbar entschlossen, das ganze in das Mono-Projekt aufzunehmen. Die Sourceforge-Seite wirkt relativ neu.
Dokumentation habe ich keine gefunden, oder aber ich bin blind. Sie haben dort aber ein Forum, da hab ich ein wenig die Nase hineingesteckt und da war auch schon eine Frage, die Deiner Frage ziemlich ähnlich ist. Vielleicht hilft Dir die Antwort im Forum - ich hoffe Du kannst Englisch: http://www.taoframework.com/node/773
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Wenn dir das TAO-Framework zu überdimensioniert ist und dir ein einfacher Header ausreicht, dann wäre evtl. der Header von Lars Middendorf etwas für Dich. Diesen konnte ich aber leider nicht mehr finden.
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
also bisher bin ich mit dem umfang von Tao sehr zufrieden. Man muss natürlich wieder alles zusammen suchen und kleinigkeiten neu entdecken, abr ich fand das jetzt nicht komplxer als damals der Einstieg in die allgemeine openGl-welt. Da war die Initialisierung schon ein guter Hammer, da viele neue Worte auftauchten. Bei Tao muss man nur erstmal darauf kommen, dass dafür nu Komponenten zuständig sind.
Ein kleiner Tipp, obwohl ich keine Ahnung hab, wie das bei TAO geregelt ist (wenns denn jemand gemacht hat), .Net hat die Eigenschaft, daß Speicherbereiche verschoben werden können, während eine Anwendung läuft, was immer dann passiert, wenn die Garbage Collection am Arbeiten ist. Lustig wird das, wenn wenn man z.B. VBOs verwendet, bei denen man OpenGl angewiesen hat, "hei da leg ich meinen kram hin und will dort ändern dürfen und du bekommst das mit". Die Daten bestehen ja dann meistens aus einem Array an Vertexdaten. Jetzt kommt die Garbage Collection und schiebt Dir das Array weg... Da biste dann sau dumm dran, weil sich die Adresse auf dein Array verändert hat und die GC dort evtl andere Variablen untergebracht hat, die OpenGl jetzt für deine Variablen hält... In diese Situation kann man z.B. bei Einsatz von glBufferDataARB kommen und das kommt natürlich nicht ganz so gut Solche Objekte sollte/muss man dann pinnen, siehe z.B.
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
ja von dem Problem habe ich auch schon gehört. Ich muss mal schauen, ob sich das wirklich so bemerkbar macht, oder ob es dafür Lösungen gibt. Viel ab ich bisher ja noch nicht gemacht in C#. Ich könnte mir vorstellen, dass die Adressen von Pointern mitgeändert werde, wenn teile der Daten verschoben werden.
Ein kleiner Tipp, obwohl ich keine Ahnung hab, wie das bei TAO geregelt ist (wenns denn jemand gemacht hat), .Net hat die Eigenschaft, daß Speicherbereiche verschoben werden können, während eine Anwendung läuft, was immer dann passiert, wenn die Garbage Collection am Arbeiten ist. Lustig wird das, wenn wenn man z.B. VBOs verwendet, bei denen man OpenGl angewiesen hat, "hei da leg ich meinen kram hin und will dort ändern dürfen und du bekommst das mit". Die Daten bestehen ja dann meistens aus einem Array an Vertexdaten. Jetzt kommt die Garbage Collection und schiebt Dir das Array weg... Da biste dann sau dumm dran, weil sich die Adresse auf dein Array verändert hat und die GC dort evtl andere Variablen untergebracht hat, die OpenGl jetzt für deine Variablen hält... In diese Situation kann man z.B. bei Einsatz von glBufferDataARB kommen und das kommt natürlich nicht ganz so gut Solche Objekte sollte/muss man dann pinnen, siehe z.B.
Also ich weiss ja nicht wie ihr das macht, aber bei mir ist das in inzwischen 3 Jahren OpenGL & C# nie vorgekommen!
Die GC schaufelt dir nicht im Grafikspeicher rum, besonderst wenn du die Daten "per hand" dahin kopiert hast, ein Array im Grafikspeicher anlegen funktioniert sowieso nicht.
Den TAO Header würd ich übrigens nicht verwenden....einfach mal mit dem Reflector drüber schaun dann siehst warum.
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich würde überlegen vieleicht mit dem managed code zu arbeiten, einfach der einfachkeits halber.
Dann kannst die schönen alten Bibliotheken verwenden und dein ganzer restlicher kram bleibt in c#.
Zumindestens ist das bei den großen Systemen wie Unreal Engine 3 so.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Gibt es denn eine aktuelle funktionierende OpenGL Binding für c# ?
Es scheint das alle im Netz schimmeln tot oder so veraltet sind das man sie nicht gebrauchen kann. Das Taoframework ist down und CSGL wird seit jahren nicht weiter geplegt.
Ich würde ja Sagen ich baue mir das selbst, aber es muss doch eine simple library geben, die ähnlich DGL OpenGL nach .NET bringt.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hatte vor kurzem auch die gleiche Erkenntnis gehabt. Wenn man etwas über OpenGL 1.5 haben will, dann muss man das wohl in C# selber machen, ich hab nur die alten Schinken gefunden.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Warum kopiert ihr nicht die Definitionen aus dem DGL Header und schreibt euch ein kleines Programm, das das ganze in einen C# Header umsetzt. Das dürfte eigentlich nicht allzuschwer sein.
Mitglieder in diesem Forum: 0 Mitglieder und 7 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.