C++ C++;SFML在定义的矩形内绘制可滚动内容

C++ C++;SFML在定义的矩形内绘制可滚动内容,c++,viewport,sfml,vertical-scrolling,C++,Viewport,Sfml,Vertical Scrolling,在定义的矩形内绘制可滚动内容时遇到问题。我想要实现的是能够在矩形内自由滚动内容,任何不在矩形内或部分不在矩形内的内容都会被裁剪。目前,我滚动可用项目的数量,以确保矩形外没有绘制任何内容 看看SFML中的可用内容,似乎我应该能够使用sf::View实现这一点,但我的尝试不起作用 sf::View panelView; panelView.reset(sf::FloatRect(220,85,815,575)); panelView.setViewport(sf::FloatRect(0, 0,

在定义的矩形内绘制可滚动内容时遇到问题。我想要实现的是能够在矩形内自由滚动内容,任何不在矩形内或部分不在矩形内的内容都会被裁剪。目前,我滚动可用项目的数量,以确保矩形外没有绘制任何内容

看看SFML中的可用内容,似乎我应该能够使用sf::View实现这一点,但我的尝试不起作用

sf::View panelView;

panelView.reset(sf::FloatRect(220,85,815,575));
panelView.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
然后我将视点设置为此,绘制项目,然后返回默认视图。它似乎总是绘制到整个屏幕,而不是我在重置方法中设置的所需矩形

我的理解是,这应该在x轴上创建220,y轴上创建85,宽815,高575的视口,但它在这个边界之外绘制


有什么想法吗?

通过进一步研究,解决了这个问题-似乎我只需要将我的位置设置为0.0f和1.0f之间的一个因子,下面示例代码中的位置就是我希望视口定位的位置:

sf::FloatRect panelRect(position.left / SCREENWIDTH,
(position.top) / SCREENHEIGHT,
(position.width) / SCREENWIDTH,
(position.height) / SCREENHEIGHT);

panelView.reset(sf::FloatRect(position.left,position.top,position.width,position.height));
panelView.setViewport(panelRect);