///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn WebGLRenderTarget::with_attachments(
width : Int,
height : Int,
count : Int,
) -> WebGLRenderTarget = "renderTargetWithAttachments"
///|
pub suberror RenderError {
RenderError(String)
} derive(Debug)
///|
extern "js" fn WebGLRenderer::compile_promise(
self : WebGLRenderer,
scene : Scene,
camera : Camera,
) -> @js_async.Promise[Unit] =
#| (self, scene, camera) => Promise.resolve().then(() => self.compileAsync(scene, camera)).then(() => undefined)
///|
pub async fn WebGLRenderer::compile_async(
self : WebGLRenderer,
scene : Scene,
camera : Camera,
) -> Unit raise RenderError {
self.compile_promise(scene, camera).wait() catch {
error => raise RenderError(error.to_string())
}
}
///|
extern "js" fn WebGLRenderer::read_pixels_promise(
self : WebGLRenderer,
target : WebGLRenderTarget,
x : Int,
y : Int,
width : Int,
height : Int,
bytes : Bytes,
) -> @js_async.Promise[Unit] =
#| (self, target, x, y, width, height, bytes) => Promise.resolve().then(() => self.readRenderTargetPixelsAsync(target, x, y, width, height, bytes)).then(() => undefined)
///|
/// Read RGBA8 pixels into a buffer of at least width * height * 4 bytes.
pub async fn WebGLRenderer::read_render_target_pixels_async(
self : WebGLRenderer,
target : WebGLRenderTarget,
x : Int,
y : Int,
width : Int,
height : Int,
bytes : Bytes,
) -> Unit raise RenderError {
self.read_pixels_promise(target, x, y, width, height, bytes).wait() catch {
error => raise RenderError(error.to_string())
}
}