У меня проблемы с рисованием прокручиваемого содержимого в пределах определенного прямоугольника. То, чего я хотел бы достичь, — это возможность свободно прокручивать содержимое внутри прямоугольника, причем все, что находится за пределами или частично обрезается. В настоящее время я прокручиваю количество доступных элементов, чтобы убедиться, что ничто не нарисовано за пределами прямоугольника.
Глядя на то, что доступно в SFML, кажется, что я смогу добиться этого с помощью sf :: View, но мои попытки не работают.
sf::View panelView;
panelView.reset(sf::FloatRect(220,85,815,575));
panelView.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
Затем я устанавливаю точку обзора на это, рисую свои элементы и возвращаюсь к виду по умолчанию. Кажется, он всегда рисует на весь экран, хотя вместо желаемого прямоугольника, который я установил в методе Reset?
Насколько я понимаю, это должно создать область просмотра в 220 на оси x, 85 на оси y и иметь ширину 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);
Других решений пока нет …