Das wird ziemlich vage Frage sein, aber ich frage mich, wie um das Problem im bekommen mit Blick auf ...Rahmen Agnostiker struct Ausgabe
ich zur Zeit viele verschiedene Projekte, die ich vor einiger Zeit geschrieben haben, dass alle haben einen ähnlichen Rahmen für die räumliche Partitionierung und Sortierung, jedoch wurde für jedes Projekt eine eigene Version dieses Frameworks implementiert. Sie sind alle grafisch basierten Anwendungen haben aber Implementierungen in:
- Silverlight
- WinForms (GDI)
- XNA
- DirectX
- OpenGL (TAO)
Obwohl es 5 sind verschiedene Versionen dieses Rahmens sie alle genau das gleiche tun, nur verschiedene Objekte akzeptieren. Ein Beispiel wäre, dass GDI System.Drawing.Point für die meisten seiner zeichnungsbezogenen Aufgaben verwendet, während XNA Vector2 verwendet, jedoch sind sie beide Objekte, die ein X/Y darstellen, dasselbe gilt für die anderen Bibliotheken, einige speichern die x/y-Werte als int. float, double, aber letztlich im Herzen repräsentieren sie die gleichen Daten.
Die Hauptaufgabe des räumlichen Partitionierungs-Frameworks besteht darin, diese 2/3 dimensionalen Werte abzuarbeiten und Bäume zu erzeugen oder andere Sortier-basierte Aufgaben um diese Zahlen herum auszuführen.
Ich versuche derzeit, viele meiner verteilten Frameworks zu einem einzigen zentralisierten zu vereinheitlichen, so dass es ein einziges Projekt mit Tests geben kann, die beweisen, dass alles in Ordnung ist.
Also war mein erster Gedanke, einige agnostische Objekte zu erstellen, um mit diesem X/Y-Problem umzugehen, wie ein benutzerdefiniertes Point2D, Point3D, Quaternion, Rect usw. Allerdings müsste ich sie dann wieder in ihre native Version konvertieren, und wenn ich das für jeden Punkt in jedem Objekt bei jedem Renderzyklus tun würde, dann klingt das wie eine massive Leistungseinbuße (besonders wenn dieses Framework so leistungsfähig wie möglich sein soll).
Ich dachte über Schnittstellen, die dieses Problem lösen würden und nur das native Objekt intern auf den Implementierungsteil wickeln, aber ich bin immer noch nicht sicher, ob dies der beste Weg zu gehen ist, wie ive nie wirklich viel plattformübergreifend getan basierte Entwicklung musste diese Probleme nie lösen.
Wie auch immer, wir werden jetzt aufhören zu waffeln, und jeder Rat wäre großartig!
Ja XNA ist so ziemlich die, die ich wiederholen möchte, und Sie haben den Nagel auf den Hit Kopf mit der Mathematik-Bibliothek, als das ist im Wesentlichen, was Bühne im an, als ob das an Ort und Stelle ist alles andere kann sie nutzen und die zugrunde liegenden nativen Methoden abstrahieren ... Die GDI und zu einem gewissen Grad die GDI-Implementierungen sind für Toolkit-basierte Anwendungen, so Sie müssen sowieso nicht so schnell laufen. – Grofit