texture_rgba_renderer 0.0.4 texture_rgba_renderer: ^0.0.4 copied to clipboard
A texture helper which brings a high level api to handle RGBA data.
Texture Rgba Renderer #
A texture helper which brings a high level api to handle RGBA data. No frame copy required, and with full hardware acceleration.
Platform Support #
The plugin aims to provide opengl impl for the texture, which bring a better performance instead of FFI
+ CustomPainter
.
- ✅ Linux
- ✅ Windows (No gpu acceleration yet due to the limitation of Flutter.)
// The available texture variants.
// Only PixelBufferTexture is currently implemented.
// Other variants are expected to be added in the future.
typedef std::variant<PixelBufferTexture, GpuSurfaceTexture> TextureVariant;
- ❌ MacOS (not implemented yet.)
Getting Started #
Create a texture by calling createTexture
. #
_textureRgbaRendererPlugin.createTexture(key).then((textureId) {
if (textureId != -1) {
debugPrint("Texture register success, textureId=$textureId");
setState(() {
this.textureId = textureId;
});
} else {
return;
}
});
Transfer rgba data by calling onRgba
. #
data = mockPicture(width, height);
final res = await _textureRgbaRendererPlugin.onRgba(key, data!, height, width);
if (!res) {
debugPrint("WARN: render failed");
}
Close a texture by calling closeTexture
. #
if (key != -1) {
_textureRgbaRendererPlugin.closeTexture(key);
}
Check the example for details.
API #
class TextureRgbaRenderer {
/// Create a texture with unique identifier [key].
///
/// @return a texture id which can be used with
/// ```dart
/// Texture(textureId: textureId)
/// ```
Future<int> createTexture(int key) {
return TextureRgbaRendererPlatform.instance.createTexture(key);
}
/// Close a texture with unique identifier [key].
///
/// @return a boolean to indicate whether the operation is sucessfully executed.
Future<bool> closeTexture(int key) {
return TextureRgbaRendererPlatform.instance.closeTexture(key);
}
/// Provide the rgba data to the texture.
Future<bool> onRgba(int key, Uint8List data, int height, int width) {
return TextureRgbaRendererPlatform.instance.onRgba(key, data, height, width);
}
}