Skip to content

forthtemple/openworld_gl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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/openworld_gl.dart';

Usage

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);

why use NativeArray replace Dart List

Dart List convert to ffi pointer need memeory copy.

Run Examples

Clone or download this repo

cd openworld_gl/openworld_gl/example

flutter run

share opengl context with openworld_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!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published