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
the api is similar to WebGL
only support draw to FBO. then share the FBO texture to Native side.
import 'package:openworld_gl/openworld_gl.dart';
int width = 200;
int height = 200;
num dpr = 1.0;
flutterGlPlugin = OpenworldGlPlugin();
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);
Dart List convert to ffi pointer need memeory copy.
Clone or download this repo
cd openworld_gl/openworld_gl/example
flutter run
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");
for iOS the key is 3 ...
eAGLShareContext = ThreeEgl.getContext(key: 3);
no need ? just webgl
not support get share context now
check the example project copy the example/android/app/libs/aars/threeegl.aar to your app android project same path
change minSdkVersion 24
File any issues, bugs, or feature requests.
Pull request please!