Browse Source

Fix texture leak in invader and luainvader samples

Michael Ragazzon 3 years ago
parent
commit
ae14353972

+ 6 - 6
Samples/invaders/src/Game.cpp

@@ -79,9 +79,7 @@ Game::Game()
 	for (int i = 0; i < NUM_SHIELDS; i++)
 	for (int i = 0; i < NUM_SHIELDS; i++)
 		shields[i] = nullptr;
 		shields[i] = nullptr;
 
 
-	// Use the OpenGL render interface to load our texture.
-	Rml::Vector2i texture_dimensions;
-	Rml::GetRenderInterface()->LoadTexture(texture, texture_dimensions, "invaders/data/invaders.tga");
+	texture.Set("invaders/data/invaders.tga");
 
 
 	defender = new Defender(this);
 	defender = new Defender(this);
 }
 }
@@ -146,15 +144,17 @@ void Game::Render(double t, float dp_ratio)
 	if (defender_lives <= 0)
 	if (defender_lives <= 0)
 		return;
 		return;
 
 
+	Rml::TextureHandle texture_handle = texture.GetHandle(Rml::GetRenderInterface());
+
 	// Render all available shields
 	// Render all available shields
 	for (int i = 0; i < NUM_SHIELDS; i++)
 	for (int i = 0; i < NUM_SHIELDS; i++)
 		shields[i]->Render(dp_ratio);
 		shields[i]->Render(dp_ratio);
 
 
 	// Render all available invaders
 	// Render all available invaders
 	for (int i = 0; i < NUM_INVADERS + 1; i++)
 	for (int i = 0; i < NUM_INVADERS + 1; i++)
-		invaders[i]->Render(dp_ratio, texture);
-	
-	defender->Render(t, dp_ratio, texture);
+		invaders[i]->Render(dp_ratio, texture_handle);
+
+	defender->Render(t, dp_ratio, texture_handle);
 }
 }
 
 
 Defender* Game::GetDefender()
 Defender* Game::GetDefender()

+ 1 - 1
Samples/invaders/src/Game.h

@@ -116,7 +116,7 @@ private:
 	Shield** shields;
 	Shield** shields;
 
 
 	// Texture that contains the sprites
 	// Texture that contains the sprites
-	Rml::TextureHandle texture;
+	Rml::Texture texture;
 
 
 	void InitialiseShields();
 	void InitialiseShields();
 	void InitialiseWave();
 	void InitialiseWave();

+ 5 - 5
Samples/luainvaders/src/Game.cpp

@@ -79,9 +79,7 @@ Game::Game()
 	for (int i = 0; i < NUM_SHIELDS; i++)
 	for (int i = 0; i < NUM_SHIELDS; i++)
 		shields[i] = nullptr;
 		shields[i] = nullptr;
 
 
-	// Use the OpenGL render interface to load our texture.
-	Rml::Vector2i texture_dimensions;
-	Rml::GetRenderInterface()->LoadTexture(texture, texture_dimensions, "luainvaders/data/invaders.tga");
+	texture.Set("luainvaders/data/invaders.tga");
 
 
 	defender = new Defender(this);
 	defender = new Defender(this);
 }
 }
@@ -144,15 +142,17 @@ void Game::Render(double t, float dp_ratio)
 	if (defender_lives <= 0)
 	if (defender_lives <= 0)
 		return;
 		return;
 
 
+	Rml::TextureHandle texture_handle = texture.GetHandle(Rml::GetRenderInterface());
+
 	// Render all available shields
 	// Render all available shields
 	for (int i = 0; i < NUM_SHIELDS; i++)
 	for (int i = 0; i < NUM_SHIELDS; i++)
 		shields[i]->Render(dp_ratio);
 		shields[i]->Render(dp_ratio);
 
 
 	// Render all available invaders
 	// Render all available invaders
 	for (int i = 0; i < NUM_INVADERS + 1; i++)
 	for (int i = 0; i < NUM_INVADERS + 1; i++)
-		invaders[i]->Render(dp_ratio, texture);
+		invaders[i]->Render(dp_ratio, texture_handle);
 	
 	
-	defender->Render(t, dp_ratio, texture);
+	defender->Render(t, dp_ratio, texture_handle);
 }
 }
 
 
 Defender* Game::GetDefender()
 Defender* Game::GetDefender()

+ 1 - 1
Samples/luainvaders/src/Game.h

@@ -119,7 +119,7 @@ private:
 	Shield** shields;
 	Shield** shields;
 
 
 	// Texture that contains the sprites
 	// Texture that contains the sprites
-	Rml::TextureHandle texture;
+	Rml::Texture texture;
 
 
 	void InitialiseShields();
 	void InitialiseShields();
 	void InitialiseWave();
 	void InitialiseWave();