使用 SFML 使自定义类型可绘制

Making custom types drawable with SFML

我最近开始使用 SFML,我决定作为一种学习经验,我会使用它制作一个 pong 克隆。我定义了一个名为 Ball 的 class,它使用 SFML 绘制 RectangleShape。但是,当我尝试使用 window.draw() 函数将此自定义类型绘制到屏幕上时,出现错误,因为 Ball 不是 sf::Drawable。作为 SFML 的新手,我将不胜感激。

要使用window.draw(object)对象的class必须继承drawable interface并实现抽象sf::Drawable::draw函数。

听起来 sf::RectangleShape 是 Ball 的成员。 SFML 知道如何渲染形状,但不知道 Ball 本身。 Ball 的 class 声明应如下所示:

class Ball : public sf::Drawable //,...
{
    //...
    private:
    virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const;
    //...
};

绘制应该这样实现:

void Ball::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
    //assuming m_shape is the sf::RectangleShape
    target.draw(m_shape, states);
}