Próbuję pracować z klasą SpriteKit SKMutableTexture
, ale nie wiem jak pracować z UnsafeMutablePointer<Void>
. Mam niejasny pomysł, że jest to wskaźnik do szeregu danych bajtowych w pamięci. Ale jak mogę to zaktualizować? Jak by to wyglądało w kodzie?Co to jest UnsafeMutablePointer <Void>? Jak zmodyfikować pamięć podstawową?
Edit
Oto podstawowe przykładowy kod do pracy. Jak mogę to zrobić, aby zrobić coś tak prostego, jak stworzyć czerwony kwadrat na ekranie?
let tex = SKMutableTexture(size: CGSize(width: 10, height: 10))
tex.modifyPixelDataWithBlock { (ptr:UnsafeMutablePointer<Void>, n:UInt) -> Void in
/* ??? */
}
Próbowałem tego z przykładowym projektem SpriteKit w Xcode i wydaje się, że robię to, co trzeba - ale nie wiem nic o SpriteKit, więc nie mogę zagwarantować, że to "droga", aby to zrobić. –
Dziękuję, że to działa. Teraz widzę kwadrat na ekranie, spodziewałem się jednak, że metoda modifyPixelDataWithBlock będzie wywoływana raz na ramkę - jak jakaś alternatywa dla modułu cieniującego fragmentu, ale blok jest wywoływany tylko raz. Więcej kopania ... – Bret
Pamiętaj, że musisz przekazać wstępnie pomnożone przez alfa wartości dla części RGB. Z [docs] (https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKMutableTexture_Ref/# // apple_ref/occ/instm/SKMutableTexture/modifyPixelDataWithBlock :) 'Zakładamy, że bajty tekstur są przechowywane jako ciasno spakowane 32 bpp, 8bpc (bez znaku liczby całkowitej) RGBA pixel dane. Podane składniki kolorów powinny już zostać pomnożone przez wartość alfa. " – Benzi