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

Aktuelle Zeit: Fr Apr 19, 2024 10:37

Foren-Übersicht » Sonstiges » Community-Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [dglOpenGL.pas] .NET Version
BeitragVerfasst: Mo Sep 12, 2005 20:26 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Ich habe mal eine Frage:

Mir schwirrt schon seit langer Zeit die Idee im Kopf rum den dglOpenGL - Header in eine Assembly( .NET DLL ) zu Stecken, und dadurch, unter anderem auch durch geschicktes deklarieren, einen OO-Header zu Verfügung zu stellen, der für sämtliche .NET Sprachen nutzbar ist, und auch eines für OpenGL unübliches OOP erlaubt.

Meine Idee war das ganze mit C# ( Und #develop ) umzusetzen, damit keine Probleme entstehen, und dieser Header dadurch auch für Mono verwendbar ist.

Ich wollte Versuchen auch besonderst die Namenspaces Effektiv zu nutzen, z.b. so:
dglOpenGL.Drawcalls
dglOpenGL.Extensions
dglOpenGL.Extensions.ARB
dglOpenGL.Extensions.NV
...

Leider muss ich ehrlich sagen ist mir der OpenGL Header nicht ganz Durchsichtig( Was besonderst an der doch Wahnsinnigen Größe liegt ), und deshalb wollte ich fragen wie euere Meinung dazu ist, und ob vielleicht jemand mitmachen würde!

mfg

Speedmaster

_________________
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 12, 2005 20:45 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
viewtopic.php?t=3467

www.3d-seite.de/csopengl

Der Namespace heißt OpenGL und alle Funktionen sind statisch in einer Klasse gl, so dass die Aufrufe so aussehen: gl.Begin(gl.TRIANGLES);gl.End() usw....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 12, 2005 20:55 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
LarsMiddendorf hat geschrieben:
http://www.delphigl.com/forum/viewtopic.php?t=3467

www.3d-seite.de/csopengl

Der Namespace heißt OpenGL und alle Funktionen sind statisch in einer Klasse gl, so dass die Aufrufe so aussehen: gl.Begin(gl.TRIANGLES);gl.End() usw....


Hatte mir das eigenlich ein bischen anderst vorgestellt. Aber ist eine gute Grundlage für meine Idee.

Wo benutzt du den Generics, b.z.w. sachen aus .NET 2.0, den die würde ich gerne rausschmeissen, b.z.w. umschreiben.

_________________
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 12, 2005 20:59 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Marshal.DelegateFromFunctionPtr ist nur in .Net 2.0 vorhanden und wichtig um aus einem Zeiger für eine Extensionfunktion eine Delegate zu machen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 13, 2005 17:15 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Hier mal eine Beispiel DLL( Klassenbibliothek ) wie ich mir das vorstellte!

Edit: Neuere Version! Ach ja: Das Device kann man nicht benutzen, ist nur Deklariert bisher( und nicht fertig )!


Dateianhänge:
Dateikommentar: Aktuellere Version!
OpenGL.zip [2.12 KiB]
262-mal heruntergeladen

_________________
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.
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 13, 2005 18:53 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Naja, das sieht mir mehr Richtung ManagedDX => OpenGL Wrapper aus.

Zitat:
namespace OpenGL.Device
{
public class Device : Form
{
// Methods
public Device(string ErrorMessage);
public void Clear();
private void CreateDevice();
public virtual void OnCreateDevice();
public void PresentScene();
protected virtual void SetupWindow();
}
}


Das Device von einer Form abzuleiten ist keine gute Idee, weil man z.B. auch OpenGL im Panel anzeigen möchte. "ErrorMessage" als Parameter im Konstruktor eines OpenGL Objectes ?

Zitat:
namespace OpenGL.Types.Color
{
[StructLayout(LayoutKind.Sequential)]
public struct Color3f
{
public float r;
public float g;
public float b;
}

....
}



Warum sollen denn diese ganzen Typen alle im Header deklariert werden? Es ist doch keine Arbeit sich den Type den man speziell für seinen Vector benötigt sich dann selber zu deklarieren. Die Vektor Array Typen sind auch sehr seltsam. Warum soll man public
Zitat:
struct AVector2f
{
public Vector2f[] Value;
}
verwenden, anstelle einfach Vector2f[] zu schreiben? Mal abgesehen davon, dass man AVector2f nicht als Vertex Array übergeben kann sondern nur das Array direkt.

Also Klassen muß man sich schon um OpenGL herum basteln. Aber die Klassen sollten dann am besten speziell auf den eigenen Zweck ausgelegt sein. Ansonsten finde ich, ist es zu allgemein um nützlich zu sein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 13, 2005 19:05 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
LarsMiddendorf hat geschrieben:
Naja, das sieht mir mehr Richtung ManagedDX => OpenGL Wrapper aus.


Sowas ähnliches war auch gedacht, das OOP für OpenGL zu erleichtern.
ManagedDX ist im Prinzip ja auch nicht schlecht, es lässt sich sehr gut damit Arbeiten.

Zitat:
Das Device von einer Form abzuleiten ist keine gute Idee, weil man z.B. auch OpenGL im Panel anzeigen möchte. "ErrorMessage" als Parameter im Konstruktor eines OpenGL Objectes ?


Stimmt, dies hatte ich bisher noch nicht bedacht.
Das Objekt Device habe ich auch bisher nur so geschrieben( Siehe oben, stand das selbe da ), will es weiterhin ausbauen.

Zitat:
Warum sollen denn diese ganzen Typen alle im Header deklariert werden? Es ist doch keine Arbeit sich den Type den man speziell für seinen Vector benötigt sich dann selber zu deklarieren. Die Vektor Array Typen sind auch sehr seltsam.

Naja, ich finde es nützlich die Typen gleich da zu haben. Denke das ist Geschmackssache, allerdings kann es auch nicht schaden oder? Das mit den Arrays ist einleutend, allerdings ist die Frage ob man diese auch so als Parameter übergeben kann( Noch nicht getestet ).

Zitat:
Also Klassen muß man sich schon um OpenGL herum basteln. Aber die Klassen sollten dann am besten speziell auf den eigenen Zweck ausgelegt sein. Ansonsten finde ich, ist es zu allgemein um nützlich zu sein.


Bisher ist ja auch noch nicht viel von der Idee zu sehen. :wink:

_________________
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 13, 2005 19:27 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Ganz wichtig wäre noch die Sache mit den Handles. Der GC sammelt die OpenGL Handles selbstverständlich nicht ein. Wenn man jetzt sich z.B. eine Klasse Texture macht, die eine Texture kapselt, dann kann man das Texture Handle nicht im Destructor/Finalize Methode freigeben, weil der Destructor in einem anderen Thread läuft, als die restliche Anwendung und die OpenGL RC immer pro Thread gelten. Kurz vorher den Context in diesem Thread zu aktivieren hat aus unerklärlichen Gründen auch nicht das gewünscht Ergebnis gebracht. Es ist jedoch auch nicht schön, wenn man zwar die Objekte alle automatisch verwaltet bekommt, sich dann aber um die Freigabe der OpenGL Handles selber kümmern muß.
Ich habe das momentan so gelöst, dass ich eine Liste von WeakReference habe und nachsehe, bei welcher WeakReference der Eigentümer bereits eingesammelt wurde und dann auch das OpenGL Handle freigebe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 13, 2005 19:54 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Werde das schon irgendwie machen!

Erstmal eine Frage zu "T4F"! Bei "T2F" benennt man eigentlich die Koordinaten ja "s" und "t", wie benenne ich bei "T4F" nun die 3. und die 4. Koordinate?

Edit: Erledigt! ;-)

_________________
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.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Sonstiges » Community-Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 33 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.205s | 18 Queries | GZIP : On ]