However, I'm not able to retrieve the pixel info in my application, the resulting ColourValue contains nothing but zero's.
I set it up as follows:
Code: Select all
Ogre::TexturePtr rttTexture = Ogre::TextureManager::getSingleton().createManual( "RttTex", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
Ogre::TEX_TYPE_2D, 480, 640, 0, Ogre::PF_R8G8B8A8, Ogre::TU_RENDERTARGET);
m_overlayTexture = rttTexture->getBuffer()->getRenderTarget();
m_overlayTexture->addViewport(m_overlayCamera);
m_overlayTexture->getViewport(0)->setClearEveryFrame(true);
m_overlayTexture->getViewport(0)->setBackgroundColour(Ogre::ColourValue(0, 0, 0, 0));
m_overlayTexture->getViewport(0)->setOverlaysEnabled(false);
Code: Select all
static int counter = 0;
m_overlayTexture->writeContentsToFile("c:/temp/screenshot" + StringOperations::ToString(counter++) + ".png"); // this works, including transparancy
Ogre::PixelFormat format = Ogre::PF_R8G8B8A8;
int outBytesPerPixel = Ogre::PixelUtil::getNumElemBytes(format);
unsigned char *data = new unsigned char [480*640*outBytesPerPixel];
Ogre::Box extents(0, 0, 480, 640);
Ogre::PixelBox pb(extents, format, data);
m_overlayTexture->copyContentsToMemory(pb, Ogre::RenderTarget::FB_AUTO);
for (int u = 0; u < 480; u++)
{
for ( int v = 0; v < 640; v++)
{
Ogre::ColourValue tempColor = pb.getColourAt(u, v, 0); // ALWAYS CONTAINS ZERO'S
}
}