使用 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);
}
我最近开始使用 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);
}