#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我所获得的全部就是将最后一个像素拉伸到新的大小,这对我要执行的操作来说不是一个好主意,因为图像调整大小被删除了,有人知道如何调整图像大小或变换纹理吗?尺寸/尺度?
答案 0 :(得分:2)
sf::Sprite::setTextureRect()
定义纹理的一部分,它可以作为精灵显示。它没有定义实际的显示尺寸。
为此,您可能需要使用sf::Sprite::setScale()
,它允许您定义缩放比例。例如,调用sprite.setScale(2, 2);
将使显示的精灵的宽度/高度翻倍。
如果您想缩小/放大整个场景,则可能需要研究sf::View
。