Saving Output to file.
Posted: Sun Dec 26, 2021 4:25 pm
Hi guys.
im using the irwizard model with the gamestates, gamemanager etc etc.
ive made a simple CGameCanvas class to draw some nodes and now I need to save the output to a file at least 3000x3000 or more. I used 1024x1024 just to test.
when i finished with the make nodes function i call this SaveImage funcion which saves a .tga file but the result is allways a completly black image...
void CGameCanvas::SaveImage()
{
m_pRendertarget = m_pGameManager->getDriver()->addRenderTargetTexture(core::dimension2d<u32>(1024, 1024), "RTT1", ECF_A8R8G8B8);
IImage* finalrender = m_pGameManager->getDriver()->createImage(m_pRendertarget, position2di(0, 0), m_pRendertarget->getSize());
IWriteFile* f = m_pGameManager->getDevice()->getFileSystem()->createAndWriteFile("media/finalrender.tga",false);
int numloaders = m_pGameManager->getDriver()->getImageWriterCount();
for (int j = 0; j < numloaders; j++)
{
IImageWriter* writer = m_pGameManager->getDriver()->getImageWriter(j);
if (!writer->isAWriteableFileExtension("media/finalrender.tga"))
continue;
writer->writeImage(f, finalrender, 0);
f->drop();
writer->drop();
finalrender->drop();
}
}
in the CGamePlayState:
void CGamePlayState::Update(CGameManager* pManager)
{
// overide in child class
pManager->getDriver()->beginScene(true, true, video::SColor(0, 255, 100, 100));
//I've also tried putting setRenderTarget here but no nodes are rendered.
pManager->getSceneManager()->drawAll();
pManager->getGUIEnvironment()->drawAll();
pManager->getDriver()->setRenderTarget(pManager->getCanvas()->GetRenderTexture()); //m_pRendertarget
pManager->getDriver()->endScene();
}
what am I doing wrong here?
thx in advance
im using the irwizard model with the gamestates, gamemanager etc etc.
ive made a simple CGameCanvas class to draw some nodes and now I need to save the output to a file at least 3000x3000 or more. I used 1024x1024 just to test.
when i finished with the make nodes function i call this SaveImage funcion which saves a .tga file but the result is allways a completly black image...
void CGameCanvas::SaveImage()
{
m_pRendertarget = m_pGameManager->getDriver()->addRenderTargetTexture(core::dimension2d<u32>(1024, 1024), "RTT1", ECF_A8R8G8B8);
IImage* finalrender = m_pGameManager->getDriver()->createImage(m_pRendertarget, position2di(0, 0), m_pRendertarget->getSize());
IWriteFile* f = m_pGameManager->getDevice()->getFileSystem()->createAndWriteFile("media/finalrender.tga",false);
int numloaders = m_pGameManager->getDriver()->getImageWriterCount();
for (int j = 0; j < numloaders; j++)
{
IImageWriter* writer = m_pGameManager->getDriver()->getImageWriter(j);
if (!writer->isAWriteableFileExtension("media/finalrender.tga"))
continue;
writer->writeImage(f, finalrender, 0);
f->drop();
writer->drop();
finalrender->drop();
}
}
in the CGamePlayState:
void CGamePlayState::Update(CGameManager* pManager)
{
// overide in child class
pManager->getDriver()->beginScene(true, true, video::SColor(0, 255, 100, 100));
//I've also tried putting setRenderTarget here but no nodes are rendered.
pManager->getSceneManager()->drawAll();
pManager->getGUIEnvironment()->drawAll();
pManager->getDriver()->setRenderTarget(pManager->getCanvas()->GetRenderTexture()); //m_pRendertarget
pManager->getDriver()->endScene();
}
what am I doing wrong here?
thx in advance