Flutter GL
cross-platform call OpenGL API by Dart through dart:ffi. Provides OpenGL with Texture Widget on Flutter.
Support iOS, Android, Web, macOS, Windows
Linux TODO
Used by three_dart
OpenGL API
the api is similar to WebGL
only support draw to FBO. then share the FBO texture to Native side.
import
import 'package:flutter_gl/flutter_gl.dart';
Usage
int width = 200;
int height = 200;
num dpr = 1.0;
flutterGlPlugin = FlutterGlPlugin();
Map<String, dynamic> _options = {
"width": width,
"height": height,
"dpr": dpr,
"antialias": true,
"alpha": false
};
await flutterGlPlugin.initialize(options: _options);
// on web this need called after web canvas dom was added to document
await flutterGlPlugin.prepareContext();
// you can get gl by
gl = flutterGlPlugin.gl;
// then you can call OpenGL ES API by gl like
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
// use this method to notify Flutter update Texture Widget
// sourceTextue is a texture which bind to FBO framebuffer
flutterGlPlugin.updateTexture(sourceTexture);
why use NativeArray replace Dart List
Dart List convert to ffi pointer need memeory copy.
Run Examples
Clone or download this repo
cd flutter_gl/flutter_gl/example
flutter run
share opengl context with flutter_gl
Android
when init the plugin, save share opengl context with ThreeEgl,
ThreeEgl.setContext("shareContext", shareEglEnv.eglContext);
so you can get it use ThreeEgl lib, then create yourself opengl context share with "shareContext"
shareContext = ThreeEgl.getContext("shareContext");
iOS
for iOS the key is 3 ...
eAGLShareContext = ThreeEgl.getContext(key: 3);
Web
no need ? just webgl
Windows
not support get share context now
Android
check the example project copy the example/android/app/libs/aars/threeegl.aar to your app android project same path
change minSdkVersion 24
Screenshot
Issues
File any issues, bugs, or feature requests.
Contributing
Pull request please!
Libraries
- flutter_gl
- native-array/index
- used for better performance on app & desktop when buffer need change frequent if use Dart List, will need memory copy every time convert to pointer
- native-array/NativeArray.app
- native-array/NativeArray.web
- openGL/OpenGL
- openGL/OpenGL-Base
- openGL/opengl-desktop/opengl
- opengl bind for desktop https://gitlab.com/ext/dart-opengl
- openGL/opengl-desktop/src/opengl_header
- openGL/opengl-desktop/src/opengl_init
- openGL/opengl-desktop/src/opengl_library
- openGL/OpenGL-ES
- openGL/OpenGL-Web
- openGL/opengl/OpenGL-Platform
- openGL/opengl/OpenGL20Constant
- openGL/opengl/OpenGL30Constant
- openGL/opengl/opengl_es_bindings/opengl_es_bindings
- openGL/opengl/opengl_es_bindings/src/egl_bindings
- openGL/opengl/opengl_es_bindings/src/gldesktop_bindings
- openGL/opengl/opengl_es_bindings/src/gles_bindings
- openGL/opengl/OpenGLContextDesktop
- openGL/opengl/OpenGLContextES
- openGL/opengl/OpenGLContextWeb
- openGL/opengl/OpenGLEXTConstant