【问题标题】:Building a game with SFML and texture refuses to draw使用 SFML 和纹理构建游戏拒绝绘制
【发布时间】:2017-01-22 17:13:07
【问题描述】:

我正在使用 SFML 2.3 构建游戏,但遇到了一个非常奇怪的问题。我有两个不同的纹理文件,都是 .png,但其中一个拒绝绘制。

无论哪种方式,我都没有收到任何错误消息。出于某种原因,TextureA 可以正常工作并且看起来很好,但 TextureB 没有绘制。

我确保代码正确,检查了大写字母,我将两者放在同一个文件夹中,并尝试了所有方法。 我什至尝试输入 TextureA 代替 TextureB 并且 TextureA 绘制得很好。我认为问题可能出在 .png 文件本身,但我不知道它是什么。

提前致谢!

【问题讨论】:

标签: c++ c++11 visual-c++ textures sfml


【解决方案1】:

纹理和 SFML 有一个问题。 Sprites 假定它们不是纹理资源的所有者。这样,您必须确保在尝试绘制时纹理仍然存在。看这里的代码:

sf::Sprite makeSprite() {
    sf::Texture tex;
    tex.loadFromFile("someTexture.png");

    sf::Sprite sprite;

    sprite.setTexture(tex);

    // You indeed return the sprite, but tex is going out of scope here.
    return sprite;
}

// further code will draw the sprite as a white square.

相反,尝试将纹理保留在加载的纹理列表中。您可以在某处保留一个向量,或者只是将您的纹理作为静态变量放在函数makeSprite 中。我强烈建议不要使用静态或全局变量,因为它们是设计缺陷的第一个迹象,但它仍然是一个有效的解决方案。

【讨论】:

  • @Zbadrawy 你真的想去而不知道为什么添加它有效吗?
猜你喜欢
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
相关资源
最近更新 更多