don't pass View to readPixels (only width/height, x/y offsets needed, and optionally rendertarget)
This commit is contained in:
@@ -800,10 +800,11 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
||||
if (captureRenderTarget && view.renderTarget == null) {
|
||||
throw Exception();
|
||||
}
|
||||
|
||||
await withVoidCallback((requestId, cb) {
|
||||
Renderer_readPixelsRenderThread(
|
||||
renderer,
|
||||
view.view,
|
||||
viewport.width, viewport.height, 0, 0,
|
||||
view.renderTarget == null
|
||||
? nullptr
|
||||
: view.renderTarget!.getNativeHandle(),
|
||||
|
||||
@@ -17,7 +17,7 @@ EMSCRIPTEN_KEEPALIVE void Renderer_render(TRenderer *tRenderer, TView *tView);
|
||||
EMSCRIPTEN_KEEPALIVE void Renderer_renderStandaloneView(TRenderer *tRenderer, TView *tView);
|
||||
EMSCRIPTEN_KEEPALIVE void Renderer_readPixels(
|
||||
TRenderer *tRenderer,
|
||||
TView *tView,
|
||||
uint32_t width, uint32_t height, uint32_t xOffset, uint32_t yOffset,
|
||||
TRenderTarget *tRenderTarget,
|
||||
TPixelDataFormat tPixelBufferFormat,
|
||||
TPixelDataType tPixelDataType,
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace thermion
|
||||
void Renderer_renderStandaloneViewRenderThread(TRenderer *tRenderer, TView *tView, uint32_t requestId, VoidCallback onComplete);
|
||||
void Renderer_readPixelsRenderThread(
|
||||
TRenderer *tRenderer,
|
||||
TView *tView,
|
||||
uint32_t width, uint32_t height, uint32_t xOffset, uint32_t yOffset,
|
||||
TRenderTarget *tRenderTarget,
|
||||
TPixelDataFormat tPixelBufferFormat,
|
||||
TPixelDataType tPixelDataType,
|
||||
|
||||
@@ -93,7 +93,7 @@ class CaptureCallbackHandler : public filament::backend::CallbackHandler
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void Renderer_readPixels(
|
||||
TRenderer *tRenderer,
|
||||
TView *tView,
|
||||
uint32_t width, uint32_t height, uint32_t xOffset, uint32_t yOffset,
|
||||
TRenderTarget *tRenderTarget,
|
||||
TPixelDataFormat tPixelBufferFormat,
|
||||
TPixelDataType tPixelDataType,
|
||||
@@ -102,9 +102,6 @@ EMSCRIPTEN_KEEPALIVE void Renderer_readPixels(
|
||||
|
||||
auto *renderer = reinterpret_cast<filament::Renderer *>(tRenderer);
|
||||
auto *renderTarget = reinterpret_cast<filament::RenderTarget *>(tRenderTarget);
|
||||
auto *view = reinterpret_cast<filament::View *>(tView);
|
||||
|
||||
filament::Viewport const &vp = view->getViewport();
|
||||
|
||||
filament::backend::PixelDataFormat pixelBufferFormat = static_cast<filament::backend::PixelDataFormat>(tPixelBufferFormat);
|
||||
filament::backend::PixelDataType pixelDataType = static_cast<filament::backend::PixelDataType>(tPixelDataType);
|
||||
@@ -126,9 +123,9 @@ EMSCRIPTEN_KEEPALIVE void Renderer_readPixels(
|
||||
);
|
||||
|
||||
if(renderTarget) {
|
||||
renderer->readPixels(renderTarget, 0, 0, vp.width, vp.height, std::move(pbd));
|
||||
renderer->readPixels(renderTarget, xOffset, yOffset, width, height, std::move(pbd));
|
||||
} else {
|
||||
renderer->readPixels(0, 0, vp.width, vp.height, std::move(pbd));
|
||||
renderer->readPixels(xOffset, yOffset, width, height, std::move(pbd));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -474,7 +474,7 @@ extern "C"
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void Renderer_readPixelsRenderThread(
|
||||
TRenderer *tRenderer,
|
||||
TView *tView,
|
||||
uint32_t width, uint32_t height, uint32_t xOffset, uint32_t yOffset,
|
||||
TRenderTarget *tRenderTarget,
|
||||
TPixelDataFormat tPixelBufferFormat,
|
||||
TPixelDataType tPixelDataType,
|
||||
@@ -485,7 +485,7 @@ extern "C"
|
||||
std::packaged_task<void()> lambda(
|
||||
[=]() mutable
|
||||
{
|
||||
Renderer_readPixels(tRenderer, tView, tRenderTarget, tPixelBufferFormat, tPixelDataType, out, outLength);
|
||||
Renderer_readPixels(tRenderer, width, height, xOffset, yOffset, tRenderTarget, tPixelBufferFormat, tPixelDataType, out, outLength);
|
||||
PROXY(onComplete(requestId));
|
||||
});
|
||||
auto fut = _renderThread->add_task(lambda);
|
||||
|
||||
Reference in New Issue
Block a user