Текстурное преобразование SFML (увеличение) - PullRequest
0 голосов
/ 04 октября 2018
#include <iostream>
#include <SFML/Graphics.hpp>    

int main()
{
    int desktopwidth = sf::VideoMode::getDesktopMode().width;
    int desktopheight = sf::VideoMode::getDesktopMode().height;
    sf::ContextSettings settings;settings.antialiasingLevel = 8;
    sf::RenderWindow window(sf::VideoMode(desktopwidth, desktopheight), "Texture Transforming!", sf::Style::Fullscreen, settings);
    while (window.isOpen())
    {
        sf::Image image;
        if (!(image.loadFromFile("texture.jpg")))
            std::cout << "Cannot load image";   //Load Image
        sf::Texture texture;
        texture.loadFromImage(image);  //Load Texture from image
        sf::Sprite sprite;
        sprite.setTexture(texture);
        sprite.setTextureRect({ 0, 0, desktopwidth, desktopheight });
        window.clear();
        window.draw(sprite);
        window.display();
    }
    return 0;
}

То, что я хочу сделать, это растянуть текстуру до полного размера экрана, когда экран больше, чем изображение.Используя setTextureRect, все, чего я достиг, это растянул последний пиксель до нового размера, что не очень хорошо для того, что я пытаюсь сделать, так как изменение размера изображения было удалено, кто-нибудь знает, как можно изменить размер изображения или преобразовать текстуру?размер / весы

1 Ответ

0 голосов
/ 04 октября 2018

sf::Sprite::setTextureRect() определяет часть текстуры, которая видна как спрайт.Он не определяет фактический размер дисплея.

Для этой цели вы можете использовать sf::Sprite::setScale(), что позволяет вам определять коэффициент масштабирования.Например, вызов sprite.setScale(2, 2); сделает отображаемый спрайт в два раза шире / выше.

Если вы хотите уменьшить / увеличить масштаб всей вашей сцены, вы, возможно, захотите заглянуть в sf::View.

...