Was ist schnellste Grafikengine und welche Programmiersprache?



  • Ich schreibe gerade einen Player für Livestreams. Das mit dem Sound ist alles schon fertig geschrieben. Doch, da ich so gut wie keine Erfahrung mit "Zeichnen" habe weiß ich nicht mit was ich am besten die Visualisierung mache und in welcher Sprache. Das Hauptprogramm ist in c# geschrieben. Als daten bekomme ich ein struct Array mit der größe 1024 siehe(http://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation). Ich habe mir das so vorgestellt das ganze in dlls auszulagern. Von dem her kann ich es auch einer beliebigen Sprache schreiben. Doch nun ja leider habe ich nicht viel Erfahrung mit Grafik. Ich dachte mir ich mache es in c++. Doch dort stellt sich die Frage ist native schneller als managed? Managed wäre angenehmer für mich jedoch kann ich auch native verwenden. 2. Frage: Mit was Zeichnen? Ich kenne GDI+ aus c# halbwegs gut. Doch ist das die schnellste Methode? Was ist mit DirectX, WPF, OpenGL. Was gibt es sonst noch?

    Kurz mit was würdet ihr das Problem lösen?.
    Außerdem steht Geschwindigkeit an erster Stelle. Qualität steht an 2. Stelle.
    Wer es sich nicht ganz vorstellen kann. Ich habe mal einen Test in c# geschrieben:
    http://s1.directupload.net/images/110623/e9hqof34.png. Doch dies sollte eben noch schneller werden



  • Sowas wie in dem Bild sollte man doch auch direkt mit WPF hinbekommen denk ich mal. Und ansonsten verwend eben Direct3D. Ich denk jedenfalls nicht dass du dafür unbedingt den Weg nach C++ einschlagen musst, C# ist sicher schnell genug für sowas wie diese Balken da.



  • Nun ja ich habe es auch schon recht gut mit gdi hinbekommen, doch steht der ganze Player unter dem Motto leistungsschonend und es wird deshalb auch die funktion zur verfügung gestellt die ganze visualisierung abzuschalten. Jedoch wenn sie an ist sollte sie möglichst weniger Leistung verbrauchen als bei Winamp also meint ihr bringt es was das ganze auf c++ auszulagern oder nicht. Und ist WPF schneller als Gdi oder nicht. Denn GDI wäre für mich leichter und ich habe es auch schon mit WPF versucht. Jedoch mangelt es mir dort an Erfahrung zu beurteilen wie ich das ganze am besten bewerkstellige. Bis her habe ich es mit jede menge einzelner linien versucht. Doch dies ist etwas umständlich, da ich diese auch zur Laufzeit erstellen muss und nicht schon vorher sagen kann ich brauche 10 linien. (stichwork resize). Also was meint ihr? Außerdem steckt hinter dem Zeichnen auch noch ein Algorithmus wo die fft daten in blöcke einteilt und dort immer den Durschnitt errechnet, da ich nicht immer ein paar 100 Balken zeichnen will. Also meint ihr angesichts dieser Tatsache trotzdem, dass c# zu c++ keinen relewanten Unterschied macht?



  • Nein, wenn du eh C# nutzt, wird C++ dir hier kaum einen Geschwindigkeitsvorteil bringen. Und solange du nicht in acht Threads while(true); laufen lässt schlägst du Winamp locker. 😃



  • thefiloe schrieb:

    Und ist WPF schneller als Gdi oder nicht.

    Klar, WPF verwendet im Hintergrund Direct3D zum zeichnen. Wenn es dir darum geht die CPU Last zu minimieren dann ist D3D sicherlich das richtige Werkzeug da das Zeichnen dann von der Grafikkarte erledigt wird und nichtmehr von der CPU.

    thefiloe schrieb:

    Denn GDI wäre für mich leichter und ich habe es auch schon mit WPF versucht. Jedoch mangelt es mir dort an Erfahrung zu beurteilen wie ich das ganze am besten bewerkstellige.

    Naja, ich würde mir ein eigenes Control bauen und die OnRender() Methode überschreiben und dort drin entsprechend einfach direkt in den DrawingContext malen. Mit einzelnen Line Objekten wäre das natürlich langsam.

    thefiloe schrieb:

    Außerdem steckt hinter dem Zeichnen auch noch ein Algorithmus wo die fft daten in blöcke einteilt und dort immer den Durschnitt errechnet, da ich nicht immer ein paar 100 Balken zeichnen will. Also meint ihr angesichts dieser Tatsache trotzdem, dass c# zu c++ keinen relewanten Unterschied macht?

    Ich meine dass C# dafür ausreichend sein wird.



  • Ok danke danke vielmals. Dann fange ich mal an mich in WPF etwas weiterzubilden und schaue wie ich das am besten zeichne. Und falls ich nochmal fragen hab meld ich mich hier. Aber ich gehe davon aus müsste alles klar sein. Also danke vielmals danke:)


Anmelden zum Antworten