Ich habe Probleme mit dem zugrunde liegenden Speicher eines MPSImage zu arbeiten. Ich habe die Methoden getBytes
und replace
auf MPSImage texture
Mitgliedsvariable verwendet, um die zugrunde liegenden Daten zu lesen und zu schreiben. Das Problem ist, dass ich keine Dokumentation darüber finden kann, wie der Speicher als Bild interpretiert wird (d. H. Wie die Zeilen, Spalten und Kanäle angeordnet sind). Ein Teil dessen, was das Problem verkompliziert, ist, dass unabhängig von der Anzahl der Feature-Channels die Daten als Stapel von RGBA-Textur-Slices gespeichert werden, wobei einige Kanäle möglicherweise nicht verwendet werden. Zum Beispiel wird es mit 3 Feature-Kanälen einen RGBA-Texturabschnitt geben, und der Platz eines Kanals bleibt ungenutzt.Apple Metal MPSImage Speicherlayout
Das Problem ist, wie sind die MPSImage Daten tatsächlich innerhalb der Textur angeordnet? Es erscheint komplizierter, als ich es ursprünglich vermutet hätte.
Nach vielen Experimenten scheint es, als ob die Daten unterschiedlich angeordnet sind, abhängig davon, ob die Anzahl der Feature-Kanäle < 4 oder> 4 ist. Aber ich habe immer noch Schwierigkeiten, es herauszufinden.
Kann mir jemand das MPSImage Datenlayout erklären?