flutter_angle
A graphics library for dart (based on angle) that allows users to view more complex rendering projects like 3D objects and more complex shaders.
Features
This is a dart conversion of flutter_web_gl originally created by @escamoteur and @kentcb.
Requirements
MacOS
- Minimum os Deployment Target: 10.14
- Xcode 13 or newer
- Swift 5
- Metal supported
iOS
- Minimum os Deployment Target: 12.0
- Xcode 13 or newer
- Swift 5
- Metal supported
iOS-Simulator
- Minimum os Deployment Target: 12.0
- Xcode 13 or newer
- Swift 5
- Metal supported
Android ANGLE
- compileSdkVersion: 34
- minSdk: 28
- OpenGL supported
- Vulkan supported
- Will automatically revert to OpenGL if below sdk 28
Android OpenGL
- compileSdkVersion: 34
- minSdk: 21
- OpenGL supported
- Not recommended for devices above sdk 27
Android Emulator
- Supported OpenGL only
- Will automatically revert to OpenGL
Windows
- Intel supported
- AMD supported
- Qualcom supported
- Direct3D 11
- OpenGL supported
- Set AngleOptions useSurfaceProducer to false for legacy build
Web
- WebGL2 supported. please add
<script src="https://cdn.jsdelivr.net/gh/Knightro63/flutter_angle/assets/gles_bindings.js"></script>
to your index.html to load the js_interop file
WASM
- WebGL2 supported. please add
<script src="https://cdn.jsdelivr.net/gh/Knightro63/flutter_angle/assets/gles_bindings.js"></script>
to your index.html to load the js_interop file
Linux
- Ubuntu supported (Tested on Linux Mint)
- OpenGL supported
Getting started
To get started add flutter_angle to your pubspec.yaml file.
Usage
This project is a simple rendering engine for flutter to view 3D models and complex shaders.
iOS issue
If you have used ios or ios-simulator and get an error pod not found FlutterAngle ~> 0.0.8. Delete Podfile.lock, change directory to ios folder and run pod install --repo-update
.
Example
Find the example for this API here.
Contributing
Contributions are welcome. In case of any problems look at existing issues, if you cannot find anything related to your problem then open an issue. Create an issue before opening a pull request for non trivial fixes. In case of trivial fixes open a pull request directly.
Libraries
- desktop/angle
- desktop/bindings/egl_bindings
- desktop/bindings/gles_bindings
- desktop/bindings/index
- desktop/index
- desktop/lib_egl
- desktop/wrapper
- flutter_angle
- 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/native_array_app
- native-array/native_array_web
- shared/array
- shared/classes
- shared/console
- shared/console_logger/console_platform
- shared/console_logger/console_web
- shared/exception
- shared/gl_program
- shared/options
- shared/render_worker
- shared/webgl
- webgl/angle
- webgl/gles_bindings
- webgl/gles_bindings_wasm
- webgl/index
- webgl/wrapper_wasm