Der Grund für die Verwendung der Inhaltspipeline finden Sie in der Microsoft XNA-Dokumentation .
Der Hauptgrund, warum XNA Game Studio eine Content-Pipeline verwendet, besteht darin, dass Ihr Spiel schnell läuft. Ohne die Inhaltspipeline müsste Ihr Spiel mit seinen Kunstelementen im ursprünglichen Dateiformat erstellt werden. Wenn das Spiel seine Grafik laden muss, um sie auf dem Bildschirm zu zeichnen, muss es sein Format bestimmen und die Daten in eine Form konvertieren, die es direkter verwenden kann. Dies müsste zur Laufzeit für jedes Asset durchgeführt werden, sodass der Spieler darauf wartet, Spaß zu haben.
Der Nachteil ist der zusätzliche Aufwand, der erforderlich ist, um ein Inhaltsprojekt einzurichten und den Prozess zum Erstellen Ihrer optimierten XNB-Dateien zu verwalten. Hier ist ein Zitat aus dem Link in Ihrer Frage zur Klarheit.
Das Problem bei der Verwendung von XNA Content Builder-Ausgaben auf anderen Plattformen besteht darin, dass die XNB-Dateien plattformspezifisch sind. MonoGame hat dies mit einem eigenen Multi-Plattform-Builder-Projekt umgangen, mit dem kompilierte Assets für alle Zielplattformen erstellt werden können. Ein Nachteil ist, dass dies von der ursprünglichen XNA-Inhaltsprojektvorlage abhängt, die nur in VS2010 verfügbar ist (Express reicht aus). Fürchte dich nicht, aber es gibt Pläne für eine Open-Source-Version.
Wie Sie bereits festgestellt haben, ist es bei MonoGame nicht erforderlich, XNB-Dateien zu verwenden, da Sie den Rohinhalt direkt zum Projekt hinzufügen können. Für ein kleines Projekt denke ich, dass das in Ordnung ist. Es ist das, was ich bisher mit all meinen Projekten gemacht habe und ich hatte (noch) keine Probleme.
Ein Wort der Vorsicht, die Dinge können sich ein wenig ändern, sobald das MonoGame-Team die Implementierung seiner eigenen Content-Pipeline abgeschlossen hat. Hier ist ein Zitat aus einem Forumsbeitrag, den ich vor einiger Zeit gepostet habe .
Es ist nicht erforderlich, XNB-Dateien zu verwenden. Sie sind einfach das Format, das der ContentManager liest (der ContentManager von MonoGame liest derzeit andere Formate wie JPG, PNG usw., wird jedoch entfernt, wenn eine Content Build-Pipeline in Betrieb genommen wird).
Der Vorteil der Verwendung von XNB besteht darin, dass es in einem Format vorverarbeitet wird, das direkt von der GPU verwendet werden kann (im Fall von GPU-Assets). Das Laden eines PNG erfordert eine Dekomprimierung des PNG, möglicherweise einen Kanalwechsel (insbesondere rot und blau) und das anschließende Kopieren dieser unkomprimierten Daten in eine Texture2D. Wenn die Textur Alpha enthält, müssen Sie das Alpha höchstwahrscheinlich für jedes Pixel selbst vormultiplizieren. Dies geschieht alles zum Ladezeitpunkt. Bei XNB erfolgt die Dekomprimierung, der Kanaltausch und vor allem die Vormultiplikation von Alpha zur Erstellungszeit. Sie können auch weiter optimieren, wie ich es in einigen meiner Spiele getan habe, indem ich eine geditherte 16-Bit-Textur an den XNB ausgegeben habe, um Speicherplatz und Bandbreite anstelle des 32-Bit-Standardformats zu sparen.
Das Laden aus PNG ist in Ordnung, wenn es für Sie funktioniert. Es gibt einige Kompromisse für die Bequemlichkeit, aber sie werden für die meisten Entwickler keine Rolle spielen.
Wenn Sie sich für den Pfad der Inhaltspipeline entscheiden, kann diese Dokumentation hilfreich sein.
https://github.com/mono/MonoGame/wiki/MonoGame-Content-Processing