updateTexture method
Implementation
Future<void> updateTexture(FlutterAngleTexture texture, [WebGLTexture? sourceTexture]) async {
if(_disposed) return;
if (sourceTexture != null) {
_rawOpenGl.glClearColor(0.0, 0.0, 0.0, 0.0);
_rawOpenGl.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
_rawOpenGl.glViewport(0, 0, (texture.options.width*texture.options.dpr).toInt(),( texture.options.height*texture.options.dpr).toInt());
_worker?.renderTexture(sourceTexture, isFBO: Platform.isAndroid);
_rawOpenGl.glFinish();
}
// If we have an iOS EGL surface created from IOSurface, use it
if (_useSurface && texture.surfaceId != nullptr) {
_libEGL!.eglSwapBuffers(_display, texture.surfaceId!);
}
else{
_rawOpenGl.glBindFramebuffer(GL_FRAMEBUFFER, 0);
if(Platform.isIOS){
_rawOpenGl.glFlush();
}
assert(_activeFramebuffer != null, 'There is no active FlutterGL Texture to update');
}
if (!Platform.isAndroid) {
await _channel.invokeMethod('textureFrameAvailable', {"textureId": texture.textureId});
}
}