mirror of
https://github.com/SFML/SFML.git
synced 2024-11-28 22:31:09 +08:00
Fixed texture cache not properly updated when a same sf::Image instance allocated a new OpenGL texture internally
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1631 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
parent
0e2297af28
commit
230f5e58ca
@ -70,12 +70,6 @@ public :
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Renderer(RenderTarget& target);
|
Renderer(RenderTarget& target);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Destructor
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
~Renderer();
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Initialize the renderer (set the default states, etc.)
|
/// \brief Initialize the renderer (set the default states, etc.)
|
||||||
///
|
///
|
||||||
@ -355,6 +349,7 @@ private :
|
|||||||
States myStatesStack[64]; ///< Stack of render states
|
States myStatesStack[64]; ///< Stack of render states
|
||||||
States* myStates; ///< Current set of render states
|
States* myStates; ///< Current set of render states
|
||||||
const Image* myTexture; ///< Current texture
|
const Image* myTexture; ///< Current texture
|
||||||
|
unsigned int myTextureId; ///< Current texture identifier (the sf::Image instance may be the same, but not the internal OpenGL texture)
|
||||||
const Shader* myShader; ///< Current pixel shader
|
const Shader* myShader; ///< Current pixel shader
|
||||||
Blend::Mode myBlendMode; ///< Current blending mode
|
Blend::Mode myBlendMode; ///< Current blending mode
|
||||||
IntRect myViewport; ///< Current target viewport
|
IntRect myViewport; ///< Current target viewport
|
||||||
|
@ -46,12 +46,6 @@ myViewportIsValid (false)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
Renderer::~Renderer()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void Renderer::Initialize()
|
void Renderer::Initialize()
|
||||||
{
|
{
|
||||||
@ -239,7 +233,7 @@ void Renderer::SetBlendMode(Blend::Mode mode)
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void Renderer::SetTexture(const Image* texture)
|
void Renderer::SetTexture(const Image* texture)
|
||||||
{
|
{
|
||||||
if ((texture != myTexture) || !myTextureIsValid)
|
if ((texture != myTexture) || (texture && (texture->myTexture != myTextureId)) || !myTextureIsValid)
|
||||||
{
|
{
|
||||||
// Apply the new texture
|
// Apply the new texture
|
||||||
if (texture)
|
if (texture)
|
||||||
@ -249,6 +243,7 @@ void Renderer::SetTexture(const Image* texture)
|
|||||||
|
|
||||||
// Store it
|
// Store it
|
||||||
myTexture = texture;
|
myTexture = texture;
|
||||||
|
myTextureId = texture ? texture->myTexture : 0;
|
||||||
myTextureIsValid = true;
|
myTextureIsValid = true;
|
||||||
}
|
}
|
||||||
else if (texture)
|
else if (texture)
|
||||||
|
Loading…
Reference in New Issue
Block a user