don't pass View to readPixels (only width/height, x/y offsets needed, and optionally rendertarget)

This commit is contained in:
Nick Fisher
2025-07-01 13:01:39 +08:00
parent 0693a2a95b
commit e984d8cf71
5 changed files with 9 additions and 11 deletions

View File

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

View File

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