Изображения текстуры сохраняются как черные - Android
Я использую этот код, чтобы сохранить texture
в bmp
файл.
Я запустил этот код на обоих окнах и android
платформ.
На Windows это работает хорошо, как и должно быть, но на Android я получаю все изображения черными, что странно, потому что в Windows я получил реальные изображения (не черный, конечно).
Само спасательное действие использует FreeImage
библиотека.
я что-то пропустил?
Я довольно потерянный здесь.
Спасибо за помощь.
Ogre::HardwarePixelBufferSharedPtr pSrcBuffer = pTexture->GetBuffer();
Ogre::HardwarePixelBufferSharedPtr pDstBuffer = m_Texture->getBuffer(0, 0);
Ogre::PixelFormat ePixelFormat = m_Texture->getFormat();
size_t uPixelSizeInBytes = Ogre::PixelUtil::getNumElemBytes(ePixelFormat);
static int cnt = 0;
size_t uTextureWidthInPixels = pTexture->GetWidth();
size_t uTextureHeightInPixels = pTexture->GetHeight();
size_t uTextureSizeInBytes = uTextureWidthInPixels * uTextureHeightInPixels * uPixelSizeInBytes;
cnt++;
unsigned char* pTextureBuffer = static_cast<unsigned char*>((pTexture->GetBuffer())->lock(Ogre::HardwareBuffer::HBL_NORMAL));
Ogre::DataStreamPtr memStream(OGRE_NEW Ogre::MemoryDataStream(pTextureBuffer, uTextureSizeInBytes, false));
(pTexture->GetBuffer())->unlock();
Ogre::Image img;
img.loadRawData(memStream, uTextureWidthInPixels, uTextureHeightInPixels, ePixelFormat);
std::ostringstream filename;
#ifdef WIN32 || _WIN64
filename << "C:\\tex\\orgSrcTex_" << cnt << ".bmp";
#endif
#ifdef ANDROID
filename << "//sdcard//tex//orgSrcTex_" << cnt << ".bmp";
#endif
std::string var = filename.str();
img.save(var);