From f8ba3cdf981d719c88b3a1181f2cfc3ee5a150fa Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Tue, 13 Dec 2022 10:56:52 +0800 Subject: [PATCH] add create_swap_chain/new viewer creation API bindings to iOS --- ios/Classes/SwiftPolyvoxFilamentPlugin.swift | 16 ++++++++++------ ios/include/PolyvoxFilamentApi.h | 2 +- ios/include/PolyvoxFilamentIOSApi.h | 1 - .../SwiftPolyvoxFilamentPlugin-Bridging-Header.h | 2 +- ios/src/ios/PolyvoxFilamentIOSApi.cpp | 3 --- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ios/Classes/SwiftPolyvoxFilamentPlugin.swift b/ios/Classes/SwiftPolyvoxFilamentPlugin.swift index b26a9b2e..ffa1b85f 100644 --- a/ios/Classes/SwiftPolyvoxFilamentPlugin.swift +++ b/ios/Classes/SwiftPolyvoxFilamentPlugin.swift @@ -119,11 +119,6 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture kCVPixelFormatType_32BGRA, pixelBufferAttrs, &targetPixelBuffer) != kCVReturnSuccess) { print("Error allocating pixel buffer") } - if(self.viewer != nil) { - create_swap_chain(self.viewer, unsafeBitCast(targetPixelBuffer!, to: UnsafeMutableRawPointer.self)) - update_viewport_and_camera_projection(self.viewer!, Int32(width), Int32(height), 1.0); - } - print("Pixel buffer created") } @@ -136,12 +131,17 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture freeResourcePtr = unsafeBitCast(freeResource, to: UnsafeMutableRawPointer.self) viewer = filament_viewer_new_ios( - unsafeBitCast(targetPixelBuffer!, to: UnsafeMutableRawPointer.self), + nil, loadResourcePtr!, freeResourcePtr!, Unmanaged.passUnretained(self).toOpaque() ) + create_swap_chain( + self.viewer, + unsafeBitCast(targetPixelBuffer!, to: UnsafeMutableRawPointer.self), + UInt32(width), UInt32(height)) + update_viewport_and_camera_projection(self.viewer!, Int32(width), Int32(height), 1.0); createDisplayLink() @@ -285,6 +285,10 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture let width = Int(args[0]) let height = Int(args[1]) createPixelBuffer(width: width, height:height) + create_swap_chain( + self.viewer, + unsafeBitCast(targetPixelBuffer!, to: UnsafeMutableRawPointer.self), + UInt32(width), UInt32(height)) result("OK") case "rotateStart": let args = call.arguments as! Array diff --git a/ios/include/PolyvoxFilamentApi.h b/ios/include/PolyvoxFilamentApi.h index 1dfd1b34..334b4444 100644 --- a/ios/include/PolyvoxFilamentApi.h +++ b/ios/include/PolyvoxFilamentApi.h @@ -22,7 +22,7 @@ void* load_glb(void* viewer, const char* assetPath); void* load_gltf(void* viewer, const char* assetPath, const char* relativePath); bool set_camera(void* viewer, void* asset, const char* nodeName); void render(void* viewer, uint64_t frameTimeInNanos); -void create_swap_chain(void* viewer, void* surface = nullptr, uint32_t width = 0, uint32_t height = 0); +void create_swap_chain(void* viewer, void* surface, uint32_t width, uint32_t height); void destroy_swap_chain(void* viewer); void set_frame_interval(void* viewer, float interval); void* get_renderer(void* viewer); diff --git a/ios/include/PolyvoxFilamentIOSApi.h b/ios/include/PolyvoxFilamentIOSApi.h index aa80a94b..5da32c15 100644 --- a/ios/include/PolyvoxFilamentIOSApi.h +++ b/ios/include/PolyvoxFilamentIOSApi.h @@ -1,3 +1,2 @@ void* filament_viewer_new_ios(void* texture, void* loadResource, void* freeResource, void* resources); -void create_swap_chain(void* viewer, void* texture); diff --git a/ios/include/SwiftPolyvoxFilamentPlugin-Bridging-Header.h b/ios/include/SwiftPolyvoxFilamentPlugin-Bridging-Header.h index 6ec7b624..aa250e53 100644 --- a/ios/include/SwiftPolyvoxFilamentPlugin-Bridging-Header.h +++ b/ios/include/SwiftPolyvoxFilamentPlugin-Bridging-Header.h @@ -1,7 +1,7 @@ #ifndef SwiftPolyvoxFilamentPlugin_Bridging_Header_h #define SwiftPolyvoxFilamentPlugin_Bridging_Header_h -void* filament_viewer_new_ios(void* texture, void* loadResource, void* freeResource, void* resources); +// void* filament_viewer_new_ios(void* texture, void* loadResource, void* freeResource, void* resources); #import "PolyvoxFilamentIOSApi.h" #import "PolyvoxFilamentApi.h" diff --git a/ios/src/ios/PolyvoxFilamentIOSApi.cpp b/ios/src/ios/PolyvoxFilamentIOSApi.cpp index 849f0fdf..f12bf46f 100644 --- a/ios/src/ios/PolyvoxFilamentIOSApi.cpp +++ b/ios/src/ios/PolyvoxFilamentIOSApi.cpp @@ -26,7 +26,4 @@ extern "C" { return (void*)viewer; } - void create_swap_chain(void* viewer, void* texture) { - ((FilamentViewer*)viewer)->createSwapChain(texture); - } }