add create_swap_chain/new viewer creation API bindings to iOS

This commit is contained in:
Nick Fisher
2022-12-13 10:56:52 +08:00
parent 41d3d88e01
commit f8ba3cdf98
5 changed files with 12 additions and 12 deletions

View File

@@ -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<Any>

View File

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

View File

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

View File

@@ -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"

View File

@@ -26,7 +26,4 @@ extern "C" {
return (void*)viewer;
}
void create_swap_chain(void* viewer, void* texture) {
((FilamentViewer*)viewer)->createSwapChain(texture);
}
}