Я стараюсь работать с классом SKMutableTexture
от SpriteKit, но я не знаю, как работать с UnsafeMutablePointer<Void>
. У меня есть неопределенная идея, что это указатель на последовательность байтовых данных в памяти. Но как я могу его обновить? Что бы это на самом деле выглядело в коде?Что такое UnsafeMutablePointer <Void>? Как изменить базовую память?
Редактировать
Вот основной пример кода для работы с. Как мне заставить это сделать что-то так же просто, как создать красный квадрат на экране?
let tex = SKMutableTexture(size: CGSize(width: 10, height: 10))
tex.modifyPixelDataWithBlock { (ptr:UnsafeMutablePointer<Void>, n:UInt) -> Void in
/* ??? */
}
Просто попробовал это с примером проекта SpriteKit в Xcode и, похоже, поступил правильно, но я ничего не знаю о SpriteKit, поэтому не могу гарантировать, что это «способ» сделать это. –
Спасибо, что это работает. Однако теперь я вижу квадрат на экране, но ожидал, что метод modifyPixelDataWithBlock будет вызываться один раз для каждого кадра - как альтернатива фрагментатору, но блок вызывается только один раз. Больше копания ... – Bret
Обратите внимание, что вам нужно передать предварительно умноженные значения альфа для части RGB. Из документа [docs] (https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKMutableTexture_Ref/# // apple_ref/occ/instm/SKMutableTexture/modifyPixelDataWithBlock :) 'Предполагается, что байты текстуры хранятся как плотно упакованные 32 bpp, 8bpc (unsigned integer) RGBA-пиксель данные. Компоненты цвета, которые вы предоставляете, должны быть уже умножены на альфа-значение. ' – Benzi