gpt4 book ai didi

c++ - 如何编辑 SFML 源代码以添加新的可绘制对象?

转载 作者:太空狗 更新时间:2023-10-29 21:06:50 24 4
gpt4 key购买 nike

嘿,我正在研究一个名为“Body”的类,它将形状和 sprite 作为一个对象保存在一起。我想进入源代码并添加一个新的重载RenderWindow的Draw()函数,这样这个新对象就可以很容易地被接收和绘制。 我该怎么做?

我正在使用

  • Windows 7
  • SFML 1.6
  • 新编译的 msVS++ 2010 静态调试库和 dll
  • 原始包含文件夹

编辑:

我还在 Drawable.hpp header 中找到了这个:

private :

friend class RenderTarget;

////////////////////////////////////////////////////////////
/// Draw the object into the specified window
///
/// \param Target : Target into which render the object
///
////////////////////////////////////////////////////////////
void Draw(RenderTarget& Target) const;

////////////////////////////////////////////////////////////
/// Render the specific geometry of the object
///
/// \param Target : Target into which render the object
///
////////////////////////////////////////////////////////////
virtual void Render(RenderTarget& Target) const = 0;

但我不知道每个函数的完整代码在哪里,只有声明。不幸的是,我在那里也没有找到迷你教程......

最佳答案

注意:

在派生并实现自己的 Drawable 之前,you may want to consider if you need to do it at all . SFML 的作者声明 sf::Drawable was not initially meant to be subclassed outside of SFML .

除此之外,

对于 SFML 1.6:

看起来您需要做的就是从sf::Drawable 派生您的类,然后实现一个虚拟Render 函数。

class MyDrawable : public sf::Drawable {

private:

virtual void Render(RenderTarget& target) const {
// Do some rendering of whatever...
target.Draw(mySubSprite);
}

sf::Sprite mySubSprite;

};

这方面的一个例子可以是 found on the SFML forums .

对于 SFML 2.0:

The Drawable header file from SFML包含描述如何派生您自己的 Drawable 类的注释。您无需修改​​ SFML 源代码即可创建新的 Drawable。

它还包括一个简单的例子:

class MyDrawable : public sf::Drawable
{
public :
...
private :
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
// You can draw other high-level objects
target.draw(m_sprite, states);
// ... or use the low-level API
states.texture = &m_texture;
target.draw(m_vertices, states);
// ... or draw with OpenGL directly
glBegin(GL_QUADS);
...
glEnd();
}
sf::Sprite m_sprite;
sf::Texture m_texture;
sf::VertexArray m_vertices;
};

此示例可能适用于 SFML 2.0,但如果您从任何版本的 SFML 检查 Drawable.hpp,它应该包含类似的示例。

关于c++ - 如何编辑 SFML 源代码以添加新的可绘制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6638297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com