blob: 7922affb54643c9577ddbec05474a220a5550e9a [file] [log] [blame]
# HG changeset patch
# User David Reepmeyer <djreep81@gmail.com>
# Date 1516124750 21600
# Branch v0-8
# Node ID d8df60aa4ec9390457ae9beeef991bf2417311cc
# Parent 719f80b343e028f51f32ae9379ef77a96bc2bb3d
OgreTexture loading proper pixel format when loading image file
diff --git a/cegui/include/CEGUI/RendererModules/Ogre/Texture.h b/cegui/include/CEGUI/RendererModules/Ogre/Texture.h
--- a/cegui/include/CEGUI/RendererModules/Ogre/Texture.h
+++ b/cegui/include/CEGUI/RendererModules/Ogre/Texture.h
@@ -88,7 +88,7 @@
//! destructor.
virtual ~OgreTexture();
//! construct an empty texture
- void createEmptyOgreTexture();
+ void createEmptyOgreTexture(PixelFormat pixel_format);
//! release the underlying Ogre texture.
void freeOgreTexture();
//! updates cached scale value used to map pixels to texture co-ords.
diff --git a/cegui/src/RendererModules/Ogre/Texture.cpp b/cegui/src/RendererModules/Ogre/Texture.cpp
--- a/cegui/src/RendererModules/Ogre/Texture.cpp
+++ b/cegui/src/RendererModules/Ogre/Texture.cpp
@@ -79,7 +79,7 @@
d_texelScaling(0, 0),
d_name(name)
{
- createEmptyOgreTexture();
+ createEmptyOgreTexture(Texture::PF_RGBA);
}
//----------------------------------------------------------------------------//
@@ -91,7 +91,6 @@
d_texelScaling(0, 0),
d_name(name)
{
- createEmptyOgreTexture();
loadFromFile(filename, resourceGroup);
}
@@ -103,7 +102,7 @@
d_texelScaling(0, 0),
d_name(name)
{
- createEmptyOgreTexture();
+ createEmptyOgreTexture(Texture::PF_RGBA);
// throw exception if no texture was able to be created
if (d_texture.isNull())
@@ -214,6 +213,7 @@
const Ogre::PixelBox* pixelBox = new Ogre::PixelBox(buffer_size.d_width, buffer_size.d_height,
1, toOgrePixelFormat(pixel_format), bufferCopy);
+ createEmptyOgreTexture(pixel_format);
d_texture->freeInternalResources();
d_texture->setWidth(buffer_size.d_width);
d_texture->setHeight(buffer_size.d_height);
@@ -242,7 +242,7 @@
// than allow that to dictate poor choices in our own APIs, we choose to
// address the issue as close to the source of the problem as possible.
Ogre::PixelBox pb(area.getWidth(), area.getHeight(),
- 1, Ogre::PF_A8R8G8B8, const_cast<void*>(sourceData));
+ 1, d_texture->getFormat(), const_cast<void*>(sourceData));
Ogre::Image::Box box(area.left(), area.top(), area.right(), area.bottom());
d_texture->getBuffer()->blitFromMemory(pb, box);
}
@@ -254,7 +254,7 @@
return;
Ogre::PixelBox pb(d_size.d_width, d_size.d_height,
- 1, Ogre::PF_A8R8G8B8, targetData);
+ 1, d_texture->getFormat(), targetData);
d_texture->getBuffer()->blitToMemory(pb);
}
@@ -400,13 +400,13 @@
}
//----------------------------------------------------------------------------//
-void OgreTexture::createEmptyOgreTexture()
+void OgreTexture::createEmptyOgreTexture(Ogre::PixelFormat pixel_format)
{
// try to create a Ogre::Texture with given dimensions
d_texture = Ogre::TextureManager::getSingleton().createManual(
getUniqueName(), "General", Ogre::TEX_TYPE_2D,
1, 1, 0,
- Ogre::PF_A8B8G8R8);
+ toOgrePixelFormat(pixel_format));
}