readPixels callback function is not called in headless mode
GrigorySamokhin opened this issue · 6 comments
Im successfully save images via callback function with GLFW windows, but in headless mode it doesn't work, Text message inside callback does not appear. To simplify I run test code from from filament_rendering_test.cpp, where I can be wrong here?
static void callback(void* buffer, size_t size, void* user) {
std::cout << "Here" << std::endl;
}
int runTest()
{
mEngine = Engine::create(Engine::Backend::OPENGL);
mSurface = mEngine->createSwapChain(16,16);
mRenderer = mEngine->createRenderer();
mScene = mEngine->createScene();
mCameraEntity = utils::EntityManager::get().create();
mCamera = mEngine->createCamera(mCameraEntity);
mView = mEngine->createView();
mView->setViewport({0, 0, 16, 16});
mView->setScene(mScene);
mView->setCamera(mCamera);
mColorGrading = ColorGrading::Builder()
.toneMapping(ColorGrading::ToneMapping::LINEAR)
.build(*mEngine);
mView->setColorGrading(mColorGrading);
mSkybox = Skybox::Builder().build(*mEngine);
mScene->setSkybox(mSkybox);
size_t size = 16 * 16 * 4;
void* buffer = malloc(size);
memset(buffer, 0, size);
PixelBufferDescriptor pd(buffer, size,
PixelDataFormat::RGBA, PixelDataType::UBYTE,
callback, nullptr);
Renderer* pRenderer = mRenderer;
pRenderer->beginFrame(mSurface);
pRenderer->render(mView);
pRenderer->readPixels(0, 0, 16, 16, std::move(pd));
pRenderer->endFrame();
mEngine->flushAndWait();
}
Which version of Filament are you using? I'm able to run your code and see "Here" printed out.
Didn't we recently fixed something for this?
hello! I have the same problem - in headless mode it doesn't work, text msg inside callback does not appear.
I run test code filament_rendering_test.cpp too
@bejado
I use filament 1.9.9
macOS 10.15.7 (19H2)
@noseeevil If you run filament_rendering_test.cpp, what output do you see?
./build.sh -p desktop debug test_filament
out/cmake-debug/filament/test/test_filament '--gtest_filter=RenderingTest.*'
Note that currently that test is failing for unrelated reasons (you can apply #3407 to temporarily fix it).
I've tried as well, and it's working fine.