我有一个sf :: Sprite,在将它绘制到窗口时,我想让它填满整个窗口。
sf :: RenderWindow.draw采用可选的sf :: RenderStates。那是我需要搞砸的吗?
答案 0 :(得分:4)
首先,教程中的basic Sprite usage。
取自Resizing in SFML 2.0上我自己的答案,顺便说一句,这是搜索“sfml sprite填充屏幕时”的第一个google结果。
首先,这是一种将图像缩放到当前RenderWindow的方法 大小
// assuming the given dimension // change this dynamically with the myRenderWindow->getView().getSize() sf::Vector2f targetSize(900.0f, 1200.0f); yourSprite.setScale( targetSize.x / yourSprite.getLocalBounds().width, targetSize.y / yourSprite.getLocalBounds().height);
请注意,如果纵横比不是,则可能会拉伸图像 保持。您可能希望添加代码来调整您的决策 情况下。
然后,如果你想拉伸RenderWindow来填充所有的屏幕, 我可以建议你使用全屏模式吗?
以下是它如何完成的片段:
// add the flag to the other ones mStyleFlag = sf::Style::Default | sf::Style::Fullscreen; // get the video mode (which tells you the size and BPP information of the current display std::vector<sf::VideoMode> VModes = sf::VideoMode::getFullscreenModes(); // then create (or automatically recreate) the RenderWindow mMainWindow.create(VModes.at(0), "My window title", mStyleFlag);
如果您正在寻找背景,最优雅的方法可能就是定义一个sf :: VertexArray,它将使用正确的纹理坐标渲染四边形填充窗口。
这取自第二个google结果:What happened to sprite::setSize in SFML2?