OPENWORLD GL
This is the flutter gl package updated to work with the latest version of gradle. It is used to work with the https://github.com/forthtemple/openworlddart/ package. This version also includes Linux compatibility
cross-platform call OpenGL API by Dart through dart:ffi. Provides OpenGL with Texture Widget on Flutter.
Support iOS, Android, Web, macOS, Windows, Linux
OpenGL API
the api is similar to WebGL
only support draw to FBO. then share the FBO texture to Native side.
import
import 'package:openworld_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
- 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
- openworld_gl
- openworld_gl_web