Ładowanie danych tekstur 4-kanałowych w systemie iOS

Chcę załadować 4-kanałowe dane tekstury z pliku w iOS, więc uważam teksturę jako mapę (ciągłą)

[0,1]x[0,1] -> [0,1]x[0,1]x[0,1]x[0,1]

Jeśli używam formatu pliku.png, XCode / iOS uważają plik za obraz, a więc mnoży każdy komponentrgb za (premultiplied alfa), uszkadzając moje dane. Jak mam to rozwiązać? Przykładami mogą być

użyj dwóch tekstur z komponentamirgb (3-kanałowy)postdivide alfaużyj innego formatu pliku

Z nich uważam, że najlepszym rozwiązaniem jest użycie innego formatu pliku. Format pliku skompresowanego GL (PVRTC?) Nie jest niezależny od platformy Apple i wydaje się mieć niską rozdzielczość (4 bity) (odniesienie).

EDYCJA: Jeśli moja odpowiedź poniżej jest prawdziwa, nie można uzyskać 4 danych kanału png w iOS. Ponieważ OpenGL polega na tworzeniu obrazów, a nie na prezentowaniu obrazów, powinno być możliwe ładowanie 4-kanałowych danych w jakiś sposób. png to format pliku dla obrazów (Kompresja zależy od wszystkich 4 kanałów ale kompresja jednego kanału jest niezależna od innych kanałów, więc można argumentować, że powinienem użyć innego formatu pliku. Jakich innych skompresowanych formatów plików powinienem używać, który jest łatwy do odczytania / zintegrowania w iOS?

UPDATE: „combinatorial” wspomniał o sposobie ładowania 4-kanałowych niezmultultipliowanych tekstur, więc musiałem podać mu poprawną odpowiedź. Jednak to rozwiązanie miało pewne ograniczenia, których nie lubiłem. Moje następne pytanie to „Dostęp do surowych danych 4-kanałowych z plików png w iOS” :)

Myślę, że jest to zły projekt biblioteki, który uniemożliwia odczytanie 4-kanałowych danych PNG. Nie lubię systemów, które starają się być mądrzejsze ode mnie.

questionAnswers(5)

yourAnswerToTheQuestion