add createRenderTargetRenderThread
This commit is contained in:
@@ -1487,6 +1487,19 @@ external void Viewer_captureRenderTargetRenderThread(
|
|||||||
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> onComplete,
|
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> onComplete,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ffi.Native<
|
||||||
|
ffi.Pointer<TRenderTarget> Function(
|
||||||
|
ffi.Pointer<TViewer>, ffi.IntPtr, ffi.Uint32, ffi.Uint32,
|
||||||
|
ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<TRenderTarget>)>>
|
||||||
|
)>(isLeaf: true)
|
||||||
|
external ffi.Pointer<TRenderTarget> Viewer_createRenderTargetRenderThread(
|
||||||
|
ffi.Pointer<TViewer> viewer,
|
||||||
|
int texture,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<TRenderTarget>)>> onComplete,
|
||||||
|
);
|
||||||
|
|
||||||
@ffi.Native<
|
@ffi.Native<
|
||||||
ffi.Void Function(ffi.Pointer<TViewer>,
|
ffi.Void Function(ffi.Pointer<TViewer>,
|
||||||
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>(isLeaf: true)
|
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>(isLeaf: true)
|
||||||
|
|||||||
@@ -101,8 +101,10 @@ class ThermionViewerFFI extends ThermionViewer {
|
|||||||
///
|
///
|
||||||
Future<RenderTarget> createRenderTarget(
|
Future<RenderTarget> createRenderTarget(
|
||||||
int width, int height, int textureHandle) async {
|
int width, int height, int textureHandle) async {
|
||||||
final renderTarget =
|
final renderTarget = await withPointerCallback<TRenderTarget>((cb) {
|
||||||
Viewer_createRenderTarget(_viewer!, textureHandle, width, height);
|
Viewer_createRenderTargetRenderThread(_viewer!, textureHandle, width, height, cb);
|
||||||
|
});
|
||||||
|
|
||||||
return FFIRenderTarget(renderTarget, _viewer!);
|
return FFIRenderTarget(renderTarget, _viewer!);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ extern "C"
|
|||||||
EMSCRIPTEN_KEEPALIVE void Viewer_captureRenderTargetRenderThread(TViewer *viewer, TView* view, TSwapChain* swapChain, TRenderTarget* renderTarget, uint8_t* out, void (*onComplete)());
|
EMSCRIPTEN_KEEPALIVE void Viewer_captureRenderTargetRenderThread(TViewer *viewer, TView* view, TSwapChain* swapChain, TRenderTarget* renderTarget, uint8_t* out, void (*onComplete)());
|
||||||
EMSCRIPTEN_KEEPALIVE void Viewer_requestFrameRenderThread(TViewer *viewer, void(*onComplete)());
|
EMSCRIPTEN_KEEPALIVE void Viewer_requestFrameRenderThread(TViewer *viewer, void(*onComplete)());
|
||||||
EMSCRIPTEN_KEEPALIVE void Viewer_loadIblRenderThread(TViewer *viewer, const char *iblPath, float intensity, void(*onComplete)());
|
EMSCRIPTEN_KEEPALIVE void Viewer_loadIblRenderThread(TViewer *viewer, const char *iblPath, float intensity, void(*onComplete)());
|
||||||
|
EMSCRIPTEN_KEEPALIVE void Viewer_createRenderTargetRenderThread(TViewer *viewer, intptr_t texture, uint32_t width, uint32_t height, void(*onComplete)(TRenderTarget*));
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE void View_setToneMappingRenderThread(TView *tView, TEngine *tEngine, thermion::ToneMapping toneMapping);
|
EMSCRIPTEN_KEEPALIVE void View_setToneMappingRenderThread(TView *tView, TEngine *tEngine, thermion::ToneMapping toneMapping);
|
||||||
EMSCRIPTEN_KEEPALIVE void View_setBloomRenderThread(TView *tView, double bloom);
|
EMSCRIPTEN_KEEPALIVE void View_setBloomRenderThread(TView *tView, double bloom);
|
||||||
|
|||||||
@@ -263,6 +263,16 @@ extern "C"
|
|||||||
auto fut = _rl->add_task(lambda);
|
auto fut = _rl->add_task(lambda);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EMSCRIPTEN_KEEPALIVE void Viewer_createRenderTargetRenderThread(TViewer *viewer, intptr_t texture, uint32_t width, uint32_t height, void(*onComplete)(TRenderTarget*)) {
|
||||||
|
std::packaged_task<void()> lambda(
|
||||||
|
[=]() mutable
|
||||||
|
{
|
||||||
|
auto renderTarget = Viewer_createRenderTarget(viewer, texture, width, height);
|
||||||
|
onComplete(renderTarget);
|
||||||
|
});
|
||||||
|
auto fut = _rl->add_task(lambda);
|
||||||
|
}
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE void
|
EMSCRIPTEN_KEEPALIVE void
|
||||||
set_frame_interval_render_thread(TViewer *viewer, float frameIntervalInMilliseconds)
|
set_frame_interval_render_thread(TViewer *viewer, float frameIntervalInMilliseconds)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user