Windows WX Anwendung und Entwicklung des Dispay OS Simulators
Rendering aller Controls mit OpenGL und CPU Fallback
Softwareentwicklung
Nach vielen Tests und Erfahrungen in der ersten Version von der FlorianF PRE Software,
habe ich mich dazu entschieden von der C# .NET Anwendung auf eine C++ Anwendung zu wechseln. In C# habe ich nach einiger Zeit die grenzen des grafischen Renderns mit GDI+ erreicht.
Das Füllen von Pfaden und live Rendering von eigenen Controls war mir zu unperformant und zu langsam.
Dazu kam, dass ich mich neben der Programmiersprache C auch in C++ einarbeiten wollte und die Anwendung auch auf Linux lauffähig sein sollte.
Nach einigen einarbeitungsstunden in die WINAPI auf reinem C++ habe ich mich dazu entschieden wxWidgets zu verwenden.
wxWidgets ist ein Open Source C++ Framework zur Entwicklung von plattformübergreifenden GUI Anwendungen.
Es bietet eine einfache API und ist für Windows, Linux und MacOS verfügbar.
FlorianF PRE Debugging Tool
(entwickelt in C# .Net)
FlorianF PRE Debugging Tool v2
(entwickelt in C++, Boost, OpenGL und wxWidgets für Windows, Linux und MacOS Support)
Nach einigen Hello World Versuchen mit wxWidgets,
habe ich angefangen meine erste Anwendung und Controls mit OpenGL zu rendern um die erweiterte
Grafikbeschleunigung der Grafikkarte zu nutzen.
Nachdem ich die Panels und Graphen aus meiner C# Anwendung in C++ nachgebaut hatte,
habe ich mit der Boos Bibliothek angefangen die Kommunikation mit dem STM32 Controller über UART zu implementieren.
Die Kommunikation erfolgt über ein eigenes Protokoll, welches ich in der C# Anwendung und auf dem Mikrocontroller meines Verstärkers bereits entwickelt und eingeführt hatte.
Obere Tabelle zeigt die verschiedenen Versionen der GUI Anwendung und die Entwicklungsschritte.
Beim verschieben und neu rendern des Graphen im Filter Fenster war beim C# Projekt schnell das Ende der Performance erreicht. Ohne Grafikbeschleunigung wird das Grid und das transparente Füllen des Polygons nur von der CPU übernommen.
Der CPU Thread bzw Kern ist somit die ganze Zeit auf 100% Last.
Beim C++ Open GL Projekt ist die CPU Last bei 0-1% und die Grafikkarte übernimmt das Rendern der Controls und des Graphen.
Ein Live Rendern von Controls und Graphen ist somit möglich und die Anwendung ist auch auf älteren Rechnern performant. Sie Simulation von Filtern ist also somit auch grafisch möglich.