提问者:小点点

改变C++SFML中的世界原点


我最近开始学习SFML,为了让自己更舒服(也更有乐趣),我开始翻译Daniel Shiffman在他的Youtube频道The Coding Train上完成的一些编码挑战。 在尝试翻译SFML中的星形场效果时,我开始在SFML中搜索将世界原点从屏幕左上角改变到中央的右函数。 我发现最接近这一点的是setOrigin函数,但它只适用于sprite而不是整个窗口/屏幕。 如果您没有理解我对这个函数的描述,那么在处理过程中它将相当于translate(x,y)函数。 如有任何帮助,我们将不胜感激。


共1个答案

匿名用户

您需要使用sf::viewhttps://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;
}

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(改变|c++sfml|中|世界|原点)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?