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