openworld_gl 0.0.26 copy "openworld_gl: ^0.0.26" to clipboard
openworld_gl: ^0.0.26 copied to clipboard

cross-platform call OpenGL API by Dart through dart:ffi. 3D programming in the cross-platform. Provides OpenGL with Texture Widget on Flutter.

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 #

screen0

screen1

Issues #

File any issues, bugs, or feature requests.

Contributing #

Pull request please!

1
likes
130
pub points
41%
popularity

Publisher

unverified uploader

cross-platform call OpenGL API by Dart through dart:ffi. 3D programming in the cross-platform. Provides OpenGL with Texture Widget on Flutter.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

ffi, flutter, flutter_web_plugins, openworld_gl_macos, openworld_gl_platform_interface

More

Packages that depend on openworld_gl