在 C++ SFML 中更改世界原点

Changing the world origin in C++ SFML

我最近接触了 SFML,为了让自己更自在(并且玩得开心),我开始翻译 Daniel Shiffman 在他的 Youtube 频道 The Coding Train 上完成的一些 Coding Challenges。在尝试在 SFML 中翻译星空效果时,我开始在 SFML 中寻找合适的功能,将世界原点从屏幕的左上角更改为中心。我发现与此最接近的是 setOrigin 函数,但它只适用于精灵而不适用于整个 window/screen。如果你不明白我对这个函数的描述,它就相当于Processing中的translate(x, y)函数。任何帮助将不胜感激。

您需要使用sf::View https://www.sfml-dev.org/tutorials/2.5/graphics-view.php

这是一个小的实现示例:

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(300, 300), "");
    sf::Vector2u size = window.getSize();
    sf::View view(sf::Vector2f(0, 0), sf::Vector2f(size.x, size.y));
    window.setView(view);

    sf::CircleShape cir(10);
    cir.setOrigin(10, 10);

    while(window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
            if (event.type == sf::Event::Closed)
                window.close();
    
        window.clear();
        window.draw(cir);
        window.display();
    }
    return 0;
}