修订 版本 2024.3703 关键词 iOS,Solar2D Native,C,CoronaGraphics.h,CoronaExternalTextureCallbacks 另请参阅 CoronaGraphics.h Corona C 函数
此结构包含提供纹理信息和在事件发生或 Corona 请求纹理信息时要调用的回调的字段。纹理由 Corona 管理,插件无法控制何时释放纹理。因此,必须根据请求提供有关纹理位图的信息。
始终使用零初始化此结构的实例。某些字段是可选的,即使它们是 NULL
也可以创建纹理。但是,其他字段是必需的,如果它们不存在,则不会推送纹理。
CoronaExternalTextureCallbacks callbacks; memset(&callbacks, 0, sizeof(CoronaExternalTextureCallbacks)); callbacks.size = sizeof(CoronaExternalTextureCallbacks);
typedef struct CoronaExternalTextureCallbacks { unsigned long size; unsigned int (*getWidth)(void* userData); unsigned int (*getHeight)(void* userData); const void* (*onRequestBitmap)(void* userData); void (*onReleaseBitmap)(void* userData); CoronaExternalBitmapFormat (*getFormat)(void* userData); void (*onFinalize)(void *userData); int (*onGetField)(lua_State *L, const char *field, void* userData); } CoronaExternalTextureCallbacks;
创建此类型的实例时,将此成员设置为 CoronaExternalTextureCallbacks
类型的字节数。此字段用于标识 API 版本。
size = sizeof(CoronaExternalTextureCallbacks);
当 Corona 请求插件提供位图的像素宽度时将调用的回调。此回调接收创建纹理资源时传递的 userData
指针。请注意,某些位图格式(例如
当 Corona 请求插件提供位图的像素高度时将调用的回调。此回调接收创建纹理资源时传递的 userData
指针。
当 Corona 的渲染系统请求位图的像素数组时,Corona 将调用此回调。此函数调用之后将始终调用 onReleaseBitmap
回调。此回调接收创建纹理资源时传递的 userData
指针。
此函数必须返回一个指向包含位图信息的 данных 的有效指针。Corona 期望位图数据是bpp = CoronaExternalFormatBPP(getFormat())
0
。
内存的总大小必须至少为……
unsigned int bitmapSizeInBytes = getWidth() * getHeight() * bytesPerPixel;
void* byteArray = onRequestBitmap(); int bytesPerPixel = CoronaExternalFormatBPP(getFormat()); int red = (int)byteArray[((Y * getWidth()) + X) * bytesPerPixel];
Corona 将调用此回调,以通知插件不再需要纹理位图的数据,这意味着插件可以从内存中删除位图数据。调用此回调后,onRequestBitmap
回调先前返回的指针将不再有效。此回调接收创建纹理资源时传递的 userData
指针。
当请求位图的像素格式时,Corona 将调用此回调。此回调接收创建纹理资源时传递的 userData
指针。这必须返回一个 CoronaExternalBitmapFormat 枚举常量,例如 kExternalBitmapFormat_RGBA
。
当 Lua TextureResourceExternal 对象即将被销毁时,Corona 将调用此回调。调用此回调后,将无法访问任何回调或返回的位图指针。本质上,这会释放与此纹理资源关联的所有对象和资源。此回调接收创建纹理资源时传递的 userData
指针。
从 Lua TextureResourceExternal 对象访问未知 Lua 属性时要调用的回调。这是插件从 Lua 对象提供自定义field
提供从 TextureResourceExternal 对象访问的属性的名称。参数 userData
是创建纹理资源时传递的指针。此函数返回推送到 Lua 堆栈上的值的个数。