在 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;
}
我最近接触了 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;
}