add setBloom Swift method handler, fix types and add createGlTexture (unused)
This commit is contained in:
@@ -25,6 +25,8 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
|||||||
var displayLink:CADisplayLink? = nil
|
var displayLink:CADisplayLink? = nil
|
||||||
var rendering:Bool = false
|
var rendering:Bool = false
|
||||||
|
|
||||||
|
var frameInterval:Double = 1 / 60.0
|
||||||
|
|
||||||
static var messenger : FlutterBinaryMessenger? = nil;
|
static var messenger : FlutterBinaryMessenger? = nil;
|
||||||
|
|
||||||
var loadResource : @convention(c) (UnsafePointer<Int8>?, UnsafeMutableRawPointer?) -> ResourceBuffer = { uri, resourcesPtr in
|
var loadResource : @convention(c) (UnsafePointer<Int8>?, UnsafeMutableRawPointer?) -> ResourceBuffer = { uri, resourcesPtr in
|
||||||
@@ -138,6 +140,7 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
|||||||
displayLink = CADisplayLink(target: self,
|
displayLink = CADisplayLink(target: self,
|
||||||
selector: #selector(doRender))
|
selector: #selector(doRender))
|
||||||
displayLink!.add(to: .current, forMode: RunLoop.Mode.default)
|
displayLink!.add(to: .current, forMode: RunLoop.Mode.default)
|
||||||
|
displayLink!.preferredFramesPerSecond = Int(1 / frameInterval)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func copyPixelBuffer() -> Unmanaged<CVPixelBuffer>? {
|
public func copyPixelBuffer() -> Unmanaged<CVPixelBuffer>? {
|
||||||
@@ -179,12 +182,67 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
|||||||
createPixelBuffer(width: Int(width), height:Int(height))
|
createPixelBuffer(width: Int(width), height:Int(height))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// var glTextureId:GLuint = 0
|
||||||
|
|
||||||
|
var glTextureCache:CVOpenGLESTextureCache? = nil
|
||||||
|
var glTexture:CVOpenGLESTexture? = nil
|
||||||
|
|
||||||
|
private func createGlTexture(width:Int, height:Int) {
|
||||||
|
let context = EAGLContext(api: .openGLES3)
|
||||||
|
EAGLContext.setCurrent(context)
|
||||||
|
var cvret = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault,
|
||||||
|
nil,
|
||||||
|
context!,
|
||||||
|
nil,
|
||||||
|
&glTextureCache);
|
||||||
|
|
||||||
|
|
||||||
|
cvret = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault,
|
||||||
|
glTextureCache!,
|
||||||
|
pixelBuffer!,
|
||||||
|
nil,
|
||||||
|
GLenum(GL_TEXTURE_2D),
|
||||||
|
GL_RGBA,
|
||||||
|
GLsizei(width), GLsizei(height),
|
||||||
|
GLenum(GL_RGBA),
|
||||||
|
GLenum(GL_UNSIGNED_BYTE),
|
||||||
|
0,
|
||||||
|
&glTexture);
|
||||||
|
|
||||||
|
|
||||||
|
// var framebuffer:GLuint = 0;
|
||||||
|
// glGenFramebuffers(1, &framebuffer);
|
||||||
|
// glBindFramebuffer(GLenum(GL_FRAMEBUFFER), framebuffer);
|
||||||
|
// var colorRenderbuffer:GLuint = 0;
|
||||||
|
// glGenRenderbuffers(1, &colorRenderbuffer);
|
||||||
|
// glBindRenderbuffer(GLenum(GL_RENDERBUFFER), colorRenderbuffer);
|
||||||
|
// glRenderbufferStorage(GLenum(GL_RENDERBUFFER), GLenum(GL_RGBA8), GLsizei(width), GLsizei(height));
|
||||||
|
// glFramebufferRenderbuffer(GLenum(GL_FRAMEBUFFER), GLenum(GL_COLOR_ATTACHMENT0), GLenum(GL_RENDERBUFFER), colorRenderbuffer);
|
||||||
|
// var depthRenderbuffer:GLuint = 0;
|
||||||
|
// glGenRenderbuffers(1, &depthRenderbuffer);
|
||||||
|
// glBindRenderbuffer(GLenum(GL_RENDERBUFFER), depthRenderbuffer);
|
||||||
|
// glRenderbufferStorage(GLenum(GL_RENDERBUFFER), GLenum(GL_DEPTH_COMPONENT16), GLsizei(width), GLsizei(height));
|
||||||
|
// glFramebufferRenderbuffer(GLenum(GL_FRAMEBUFFER), GLenum(GL_DEPTH_ATTACHMENT), GLenum(GL_RENDERBUFFER), depthRenderbuffer);
|
||||||
|
// let status = glCheckFramebufferStatus(GLenum(GL_FRAMEBUFFER)) ;
|
||||||
|
// if(status != GL_FRAMEBUFFER_COMPLETE) {
|
||||||
|
// print("failed to make complete framebuffer object \(status)");
|
||||||
|
// }
|
||||||
|
// glGenTextures(1, &glTextureId);
|
||||||
|
// glBindTexture(GLenum(GL_TEXTURE_2D), glTextureId);
|
||||||
|
// glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_MIN_FILTER), GL_LINEAR);
|
||||||
|
// glTexImage2D(GLenum(GL_TEXTURE_2D), 0, GL_RGBA8, GLsizei(width), GLsizei(height), 0, GLenum(GL_RGBA), GLenum(GL_UNSIGNED_BYTE), nil);
|
||||||
|
// glFramebufferTexture2D(GLenum(GL_FRAMEBUFFER), GLenum(GL_COLOR_ATTACHMENT0), GLenum(GL_TEXTURE_2D), glTextureId, 0);
|
||||||
|
// self.flutterTextureId = self.registry.register(self)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
|
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
let methodName = call.method;
|
let methodName = call.method;
|
||||||
switch methodName {
|
switch methodName {
|
||||||
case "createTexture":
|
case "createTexture":
|
||||||
let args = call.arguments as! Array<Int32>
|
let args = call.arguments as! Array<Int32>
|
||||||
createPixelBuffer(width:Int(args[0]), height:Int(args[1]))
|
createPixelBuffer(width:Int(args[0]), height:Int(args[1]))
|
||||||
|
// createGlTexture(width:Int(args[0]), height:Int(args[1]))
|
||||||
createDisplayLink()
|
createDisplayLink()
|
||||||
result(self.flutterTextureId)
|
result(self.flutterTextureId)
|
||||||
case "destroyTexture":
|
case "destroyTexture":
|
||||||
@@ -216,11 +274,12 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
|||||||
resize(width:args[0] as! Int32, height:args[1] as! Int32)
|
resize(width:args[0] as! Int32, height:args[1] as! Int32)
|
||||||
var pixelBufferTextureId = unsafeBitCast(pixelBuffer!, to: UnsafeRawPointer.self)
|
var pixelBufferTextureId = unsafeBitCast(pixelBuffer!, to: UnsafeRawPointer.self)
|
||||||
create_swap_chain(viewer, pixelBufferTextureId, UInt32(args[0] as! Int64), UInt32(args[1] as! Int64))
|
create_swap_chain(viewer, pixelBufferTextureId, UInt32(args[0] as! Int64), UInt32(args[1] as! Int64))
|
||||||
update_viewport_and_camera_projection(viewer, Int32(args[0] as! Int64), Int32(args[1] as! Int64), Float(args[2] as! Double))
|
update_viewport_and_camera_projection(viewer, UInt32(args[0] as! Int64), UInt32(args[1] as! Int64), Float(args[2] as! Double))
|
||||||
rendering = true
|
rendering = true
|
||||||
print("Resized to \(args[0])x\(args[1])")
|
print("Resized to \(args[0])x\(args[1])")
|
||||||
result(self.flutterTextureId);
|
result(self.flutterTextureId);
|
||||||
case "createFilamentViewer":
|
case "createFilamentViewer":
|
||||||
|
print("createFilamentViewer")
|
||||||
if(viewer != nil) {
|
if(viewer != nil) {
|
||||||
destroy_swap_chain(viewer)
|
destroy_swap_chain(viewer)
|
||||||
delete_filament_viewer(viewer)
|
delete_filament_viewer(viewer)
|
||||||
@@ -230,10 +289,14 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
|||||||
let args = call.arguments as! [Any]
|
let args = call.arguments as! [Any]
|
||||||
let width = args[0] as! Int64
|
let width = args[0] as! Int64
|
||||||
let height = args[1] as! Int64
|
let height = args[1] as! Int64
|
||||||
|
|
||||||
viewer = create_filament_viewer(nil, callback)
|
viewer = create_filament_viewer(nil, callback)
|
||||||
var pixelBufferTextureId = unsafeBitCast(pixelBuffer!, to: UnsafeRawPointer.self)
|
var pixelBufferTextureId = unsafeBitCast(pixelBuffer!, to: UnsafeRawPointer.self)
|
||||||
create_swap_chain(viewer, pixelBufferTextureId, UInt32(width), UInt32(height))
|
create_swap_chain(viewer, pixelBufferTextureId, UInt32(width), UInt32(height))
|
||||||
update_viewport_and_camera_projection(viewer, Int32(args[0] as! Int64), Int32(args[1] as! Int64), 1.0)
|
// create_render_target(viewer, CVOpenGLESTextureGetName(glTexture!), UInt32(width),UInt32(height)); // OpenGL
|
||||||
|
|
||||||
|
update_viewport_and_camera_projection(viewer, UInt32(args[0] as! Int64), UInt32(args[1] as! Int64), 1.0)
|
||||||
|
set_frame_interval(viewer, Float(frameInterval))
|
||||||
result(unsafeBitCast(viewer, to:Int64.self))
|
result(unsafeBitCast(viewer, to:Int64.self))
|
||||||
case "getAssetManager":
|
case "getAssetManager":
|
||||||
let assetManager = get_asset_manager(viewer)
|
let assetManager = get_asset_manager(viewer)
|
||||||
@@ -255,9 +318,21 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
|||||||
}
|
}
|
||||||
set_background_color(viewer, Float(args[0]), Float(args[1]), Float(args[2]), Float(args[3]))
|
set_background_color(viewer, Float(args[0]), Float(args[1]), Float(args[2]), Float(args[3]))
|
||||||
result(true)
|
result(true)
|
||||||
|
case "setToneMapping":
|
||||||
|
guard let args = call.arguments as? Int else {
|
||||||
|
result(FlutterError(code: "INVALID_ARGUMENTS", message: "Expected ToneMapping argument for setToneMapping", details: nil))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
set_tone_mapping(viewer, Int32(args));
|
||||||
|
result(true)
|
||||||
|
case "setBloom":
|
||||||
|
guard let args = call.arguments as? Double else {
|
||||||
|
result(FlutterError(code: "INVALID_ARGUMENTS", message: "Expected double argument for setBloom", details: nil))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
set_bloom(viewer, Float(args));
|
||||||
|
result(true)
|
||||||
case "loadSkybox":
|
case "loadSkybox":
|
||||||
|
|
||||||
load_skybox(viewer, call.arguments as! String)
|
load_skybox(viewer, call.arguments as! String)
|
||||||
result(true)
|
result(true)
|
||||||
case "loadIbl":
|
case "loadIbl":
|
||||||
@@ -325,12 +400,14 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
|||||||
rendering = call.arguments as! Bool
|
rendering = call.arguments as! Bool
|
||||||
result(true)
|
result(true)
|
||||||
case "setFrameInterval":
|
case "setFrameInterval":
|
||||||
let interval = call.arguments as! Double
|
frameInterval = call.arguments as! Double
|
||||||
displayLink!.preferredFramesPerSecond = Int(1 / interval)
|
if(displayLink != nil) {
|
||||||
print("Set preferred frames er second to \(displayLink!.preferredFramesPerSecond)")
|
displayLink!.preferredFramesPerSecond = Int(1 / frameInterval)
|
||||||
let fInterval = Float(interval)
|
}
|
||||||
print("Set filament interval to \(fInterval)")
|
if(viewer != nil) {
|
||||||
set_frame_interval(viewer, fInterval)
|
set_frame_interval(viewer, Float(frameInterval))
|
||||||
|
}
|
||||||
|
print("Set preferred frame interval to \(frameInterval)")
|
||||||
result(true)
|
result(true)
|
||||||
case "updateViewportAndCameraProjection":
|
case "updateViewportAndCameraProjection":
|
||||||
guard let args = call.arguments as? [Any], args.count == 3,
|
guard let args = call.arguments as? [Any], args.count == 3,
|
||||||
@@ -340,7 +417,7 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture
|
|||||||
result(FlutterError(code: "INVALID_ARGUMENTS", message: "Expected viewer, width, height, and scaleFactor for update_viewport_and_camera_projection", details: nil))
|
result(FlutterError(code: "INVALID_ARGUMENTS", message: "Expected viewer, width, height, and scaleFactor for update_viewport_and_camera_projection", details: nil))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
update_viewport_and_camera_projection(viewer, Int32(width), Int32(height), scaleFactor)
|
update_viewport_and_camera_projection(viewer, UInt32(width), UInt32(height), scaleFactor)
|
||||||
result(true)
|
result(true)
|
||||||
case "scrollBegin":
|
case "scrollBegin":
|
||||||
scroll_begin(viewer)
|
scroll_begin(viewer)
|
||||||
|
|||||||
Reference in New Issue
Block a user