C# besitzt seit Framework 2.0 eine Stopuhrklasse. Diese nennt sich "
Stopwatch" und ist im "
Diagnostics"-Namensraum versteckt.
Ob es schwer ist mir Zeigern zu arbeiten:
Nun, das kommt ganz alleine darauf an, wieviele Kenntnisse du in der Materie hast.
Wenn dir klar ist, was ein Zeiger sein soll und du weißt wie man Zeigerarithmetik anwendet, ist es nicht wirklich schierig.
Du willst ja nicht dein ganzes Programm mit Zeigern umbauen, sondern nur die Speicherung der Partikel.
Die GPGPU APIs haben erstmal überhaupt nichts mit der Grafik zu tun.
Um das aber effizient mit OpenCL zu erledigen, wirst du aber OpenGL verwenden müssen, für DirectCompute DirectX und bei CUDA weiß ich es selber nicht genau. Wenn dort kein direkter Zugriff von den Grafik APIs auf die von Cuda berechneten Daten möglich ist, kannst du ein Partikelsystem damit höchstens uneffizient realisieren.
Mir ist gerade noch etwas anderes eingefallen. Du könntest die Partikel über Shader direkt in Direct3D(XNA?) berechnen lassen.
Zwei Erläuterungen zu OpenGL über das Thema:
http://wiki.delphigl.com/index.php/GLSL_Partikel
http://wiki.delphigl.com/index.php/GLSL_Partikel_2
Das Prinzip solltest du auch auf XNA übertragen können.
Wenn du mit SSE optimieren willst, musst du entweder auf Mono umsteigen oder den Kern der Partikelsimulation in zb. C(++) schreiben.