Remove default sf::Sprite
constructor
This commit is contained in:
parent
839ad6cf70
commit
29863b14a5
@ -37,7 +37,7 @@
|
|||||||
// Our PIMPL
|
// Our PIMPL
|
||||||
struct SFMLmainWindow
|
struct SFMLmainWindow
|
||||||
{
|
{
|
||||||
SFMLmainWindow(sf::WindowHandle win) : renderWindow(win), text(font), background(sf::Color::Blue)
|
SFMLmainWindow(sf::WindowHandle win) : renderWindow(win), text(font), sprite(logo), background(sf::Color::Blue)
|
||||||
{
|
{
|
||||||
std::string resPath = [[[NSBundle mainBundle] resourcePath] tostdstring];
|
std::string resPath = [[[NSBundle mainBundle] resourcePath] tostdstring];
|
||||||
if (!logo.loadFromFile(resPath + "/logo.png"))
|
if (!logo.loadFromFile(resPath + "/logo.png"))
|
||||||
@ -45,7 +45,6 @@ struct SFMLmainWindow
|
|||||||
|
|
||||||
logo.setSmooth(true);
|
logo.setSmooth(true);
|
||||||
|
|
||||||
sprite.setTexture(logo, true);
|
|
||||||
sf::FloatRect rect = sprite.getLocalBounds();
|
sf::FloatRect rect = sprite.getLocalBounds();
|
||||||
sf::Vector2f size(rect.width, rect.height);
|
sf::Vector2f size(rect.width, rect.height);
|
||||||
sprite.setOrigin(size / 2.f);
|
sprite.setOrigin(size / 2.f);
|
||||||
|
@ -31,7 +31,7 @@ public:
|
|||||||
// Load the texture and initialize the sprite
|
// Load the texture and initialize the sprite
|
||||||
if (!m_texture.loadFromFile("resources/background.jpg"))
|
if (!m_texture.loadFromFile("resources/background.jpg"))
|
||||||
return false;
|
return false;
|
||||||
m_sprite.setTexture(m_texture);
|
m_sprite.emplace(m_texture);
|
||||||
|
|
||||||
// Load the shader
|
// Load the shader
|
||||||
if (!m_shader.loadFromFile("resources/pixelate.frag", sf::Shader::Fragment))
|
if (!m_shader.loadFromFile("resources/pixelate.frag", sf::Shader::Fragment))
|
||||||
@ -50,12 +50,12 @@ public:
|
|||||||
{
|
{
|
||||||
sf::RenderStates statesCopy(states);
|
sf::RenderStates statesCopy(states);
|
||||||
statesCopy.shader = &m_shader;
|
statesCopy.shader = &m_shader;
|
||||||
target.draw(m_sprite, statesCopy);
|
target.draw(*m_sprite, statesCopy);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
sf::Texture m_texture;
|
sf::Texture m_texture;
|
||||||
sf::Sprite m_sprite;
|
std::optional<sf::Sprite> m_sprite;
|
||||||
sf::Shader m_shader;
|
sf::Shader m_shader;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -199,8 +199,8 @@ public:
|
|||||||
m_entityTexture.setSmooth(true);
|
m_entityTexture.setSmooth(true);
|
||||||
|
|
||||||
// Initialize the background sprite
|
// Initialize the background sprite
|
||||||
m_backgroundSprite.setTexture(m_backgroundTexture);
|
m_backgroundSprite.emplace(m_backgroundTexture);
|
||||||
m_backgroundSprite.setPosition({135.f, 100.f});
|
m_backgroundSprite->setPosition({135.f, 100.f});
|
||||||
|
|
||||||
// Load the moving entities
|
// Load the moving entities
|
||||||
for (int i = 0; i < 6; ++i)
|
for (int i = 0; i < 6; ++i)
|
||||||
@ -234,7 +234,7 @@ public:
|
|||||||
|
|
||||||
// Render the updated scene to the off-screen surface
|
// Render the updated scene to the off-screen surface
|
||||||
m_surface.clear(sf::Color::White);
|
m_surface.clear(sf::Color::White);
|
||||||
m_surface.draw(m_backgroundSprite);
|
m_surface.draw(*m_backgroundSprite);
|
||||||
for (const sf::Sprite& entity : m_entities)
|
for (const sf::Sprite& entity : m_entities)
|
||||||
m_surface.draw(entity);
|
m_surface.draw(entity);
|
||||||
m_surface.display();
|
m_surface.display();
|
||||||
@ -251,7 +251,7 @@ private:
|
|||||||
sf::RenderTexture m_surface;
|
sf::RenderTexture m_surface;
|
||||||
sf::Texture m_backgroundTexture;
|
sf::Texture m_backgroundTexture;
|
||||||
sf::Texture m_entityTexture;
|
sf::Texture m_entityTexture;
|
||||||
sf::Sprite m_backgroundSprite;
|
std::optional<sf::Sprite> m_backgroundSprite;
|
||||||
std::vector<sf::Sprite> m_entities;
|
std::vector<sf::Sprite> m_entities;
|
||||||
sf::Shader m_shader;
|
sf::Shader m_shader;
|
||||||
};
|
};
|
||||||
|
@ -54,8 +54,7 @@ int main()
|
|||||||
sf::Texture sfmlLogoTexture;
|
sf::Texture sfmlLogoTexture;
|
||||||
if (!sfmlLogoTexture.loadFromFile(resourcesDir() / "sfml_logo.png"))
|
if (!sfmlLogoTexture.loadFromFile(resourcesDir() / "sfml_logo.png"))
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
sf::Sprite sfmlLogo;
|
sf::Sprite sfmlLogo(sfmlLogoTexture);
|
||||||
sfmlLogo.setTexture(sfmlLogoTexture);
|
|
||||||
sfmlLogo.setPosition({170.f, 50.f});
|
sfmlLogo.setPosition({170.f, 50.f});
|
||||||
|
|
||||||
// Create the left paddle
|
// Create the left paddle
|
||||||
|
@ -244,7 +244,12 @@ private:
|
|||||||
/// sf::RenderWindow window(sf::VideoMode({800, 600}), "SFML OpenGL");
|
/// sf::RenderWindow window(sf::VideoMode({800, 600}), "SFML OpenGL");
|
||||||
///
|
///
|
||||||
/// // Create a sprite and a text to display
|
/// // Create a sprite and a text to display
|
||||||
/// sf::Sprite sprite;
|
/// sf::Texture texture;
|
||||||
|
/// if (!texture.loadFromFile("circle.png"))
|
||||||
|
/// {
|
||||||
|
/// // error...
|
||||||
|
/// }
|
||||||
|
/// sf::Sprite sprite(texture);
|
||||||
/// sf::Font font;
|
/// sf::Font font;
|
||||||
/// if (!font.loadFromFile("arial.ttf"))
|
/// if (!font.loadFromFile("arial.ttf"))
|
||||||
/// {
|
/// {
|
||||||
|
@ -47,14 +47,6 @@ class Texture;
|
|||||||
class SFML_GRAPHICS_API Sprite : public Drawable, public Transformable
|
class SFML_GRAPHICS_API Sprite : public Drawable, public Transformable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
/// \brief Default constructor
|
|
||||||
///
|
|
||||||
/// Creates an empty sprite with no source texture.
|
|
||||||
///
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
Sprite();
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// \brief Construct the sprite from a source texture
|
/// \brief Construct the sprite from a source texture
|
||||||
///
|
///
|
||||||
@ -277,8 +269,7 @@ private:
|
|||||||
/// texture.loadFromFile("texture.png");
|
/// texture.loadFromFile("texture.png");
|
||||||
///
|
///
|
||||||
/// // Create a sprite
|
/// // Create a sprite
|
||||||
/// sf::Sprite sprite;
|
/// sf::Sprite sprite(texture);
|
||||||
/// sprite.setTexture(texture);
|
|
||||||
/// sprite.setTextureRect(sf::IntRect({10, 10}, {50, 30}));
|
/// sprite.setTextureRect(sf::IntRect({10, 10}, {50, 30}));
|
||||||
/// sprite.setColor(sf::Color(255, 255, 255, 200));
|
/// sprite.setColor(sf::Color(255, 255, 255, 200));
|
||||||
/// sprite.setPosition(100, 25);
|
/// sprite.setPosition(100, 25);
|
||||||
|
@ -693,8 +693,7 @@ void swap(Texture& left, Texture& right) noexcept;
|
|||||||
/// return -1;
|
/// return -1;
|
||||||
///
|
///
|
||||||
/// // Assign it to a sprite
|
/// // Assign it to a sprite
|
||||||
/// sf::Sprite sprite;
|
/// sf::Sprite sprite(texture);
|
||||||
/// sprite.setTexture(texture);
|
|
||||||
///
|
///
|
||||||
/// // Draw the textured sprite
|
/// // Draw the textured sprite
|
||||||
/// window.draw(sprite);
|
/// window.draw(sprite);
|
||||||
|
@ -29,15 +29,12 @@
|
|||||||
#include <SFML/Graphics/Sprite.hpp>
|
#include <SFML/Graphics/Sprite.hpp>
|
||||||
#include <SFML/Graphics/Texture.hpp>
|
#include <SFML/Graphics/Texture.hpp>
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
|
|
||||||
namespace sf
|
namespace sf
|
||||||
{
|
{
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
Sprite::Sprite() = default;
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
Sprite::Sprite(const Texture& texture)
|
Sprite::Sprite(const Texture& texture)
|
||||||
{
|
{
|
||||||
@ -133,14 +130,13 @@ FloatRect Sprite::getGlobalBounds() const
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void Sprite::draw(RenderTarget& target, const RenderStates& states) const
|
void Sprite::draw(RenderTarget& target, const RenderStates& states) const
|
||||||
{
|
{
|
||||||
if (m_texture)
|
assert(m_texture);
|
||||||
{
|
|
||||||
RenderStates statesCopy(states);
|
RenderStates statesCopy(states);
|
||||||
|
|
||||||
statesCopy.transform *= getTransform();
|
statesCopy.transform *= getTransform();
|
||||||
statesCopy.texture = m_texture;
|
statesCopy.texture = m_texture;
|
||||||
target.draw(m_vertices, 4, PrimitiveType::TriangleStrip, statesCopy);
|
target.draw(m_vertices, 4, PrimitiveType::TriangleStrip, statesCopy);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ int main()
|
|||||||
[[maybe_unused]] sf::Color color;
|
[[maybe_unused]] sf::Color color;
|
||||||
[[maybe_unused]] sf::Font font;
|
[[maybe_unused]] sf::Font font;
|
||||||
[[maybe_unused]] sf::RenderWindow renderWindow;
|
[[maybe_unused]] sf::RenderWindow renderWindow;
|
||||||
[[maybe_unused]] sf::Sprite sprite;
|
[[maybe_unused]] sf::RectangleShape rectangleShape;
|
||||||
[[maybe_unused]] sf::Vertex vertex;
|
[[maybe_unused]] sf::Vertex vertex;
|
||||||
|
|
||||||
// Network
|
// Network
|
||||||
|
Loading…
Reference in New Issue
Block a user