Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wasabia/flutter_gl
cross-platform call OpenGL API by Dart through dart:ffi. Provides OpenGL with Texture Widget on Flutter.
https://github.com/wasabia/flutter_gl
android dart flutter ios opengl opengl-es web webgl
Last synced: 3 days ago
JSON representation
cross-platform call OpenGL API by Dart through dart:ffi. Provides OpenGL with Texture Widget on Flutter.
- Host: GitHub
- URL: https://github.com/wasabia/flutter_gl
- Owner: wasabia
- Created: 2021-05-06T15:17:09.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-04-16T12:12:47.000Z (over 1 year ago)
- Last Synced: 2024-12-15T09:06:43.401Z (10 days ago)
- Topics: android, dart, flutter, ios, opengl, opengl-es, web, webgl
- Language: C
- Homepage:
- Size: 2.34 MB
- Stars: 249
- Watchers: 6
- Forks: 61
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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](https://github.com/wasabia/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 _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/exampleflutter 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 pathchange minSdkVersion 24
## Screenshot
![screen0](https://user-images.githubusercontent.com/1768228/118112805-15a0b300-b418-11eb-81c0-c693cfca95aa.png)
![screen1](https://user-images.githubusercontent.com/1768228/118112813-176a7680-b418-11eb-8ff9-877b941048e1.png)
## Issues
File any issues, bugs, or feature requests.
## Contributing
Pull request please!