PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche API/Sprache für 2D-Anwedung mit OpenCl/Compute Shader Hintergrund?


moBi
2010-03-14, 23:01:05
Konkret geht es darum, dass ich langfristig eine 2D-Anwendung in Verbindung mit Compute Shader oder OpenCL entwickeln möchte, z.B. Strömungssimulation auf der GPU. Ich kenne mich weder mit Direct3D noch mit OpenGL aus, finde die Thematik allerdings äußerst spannend und hoffe auch mal beruflich in dem Bereich tätig zu werden. Mir ist auch klar, dass das seine Zeit dauern wird. Da ich eher in C# zu Hause bin, würde ich das am liebsten damit realisieren, allerdings verträgt sich anscheinend managed Code nicht so gut mit CS und OpenCL, wodurch ich folgende Möglichkeiten sehe:

- "The Open Toolkit project" mit OpenGL/CL für C#

- SlimDX mit D3D11 und CS für C#

- SlimDX mit Direct2D und CS für C#

- C++ und eine Auswahl von Oben

Es stellt sich für mich zum einen die Frage, ob ich es überhaupt in C# machen soll und die Wrapper brauche, oder das ganze gleich "richtig" angehe und mich nochmal tiefer in C++ einarbeite. Dann hört man hier oft, dass man Direct3D OpenGL vorziehen sollte, wenn man es denn kann. Und schließlich stellt sich für mich noch die Frage, ob Direct2D oder D3D11. Zu Direct2D hab ich gelesen, dass es der quasi Nachfolger von GDI und wohl ziemlich aufgebläht und kompliziert ist, wodurch Viele das ganze einfach in D3D umsetzen.

Man kann es wohl so zusammenfassen:

- C# oder C++

- OpenGL oder Direct2D oder D3D11

- Alles egal, nach Vorliebe

Nighthawk13
2010-03-15, 01:29:57
Wenn du ohnehin nur 2D machen willst, dürfte die API zur Grafikausgabe ziemlich egal sein. Ein Bild aus dem Haupspeicher oder eine Liste von Linien zu rendern geht in jeder der APIs gut und ist das kleinere Problem im Vergleich zu einer Fluid-Sim.

Ich würde mich darauf konzentrieren, was dir im Compute Bereich besser liegt: OpenCL oder DirectCompute.
Bauchgefühlsmässig würde ich eher richtig OpenCL tendieren, da mehr Forschungspapers damit arbeiten werden, und du kein Portierungsaufwand hast, wenn du etwas umsetzen willst

Auch Cuda ist im Forschungsbereich (noch?) verbreitet, da kommst aber um C++ nicht drumherum und bist vor allem auf Nvidia festgelegt.