gpt4 book ai didi

sfml - 重复纹理以适应 SFML 中的特定尺寸

转载 作者:行者123 更新时间:2023-12-04 18:06:18 26 4
gpt4 key购买 nike

我有一个包含纹理的文件。我加载到 sf::Texture并用 setTextureRect 拆分成 Sprite .

现在假设一个 Sprite 包含 20 像素宽的纹理的一部分。如何渲染它以适应例如宽度213 像素。我能想到的唯一方法是将其渲染为 sf::RenderTexture并用另一个 Sprite 裁剪它。

有一个更好的方法吗?

最佳答案

您可以使用 sf::Texture::setRepeated 要做到这一点。

但是,您需要将较大图像的那部分复制到独立的纹理中。

下面是一个例子:

#include <SFML/Graphics.hpp>

int main(int, char const**)
{
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");

sf::Image img;
img.create(20, 20);
for (auto i = 0; i < 20; ++i) {
for (auto j = 0; j < 20; ++j) {
img.setPixel(i, j, sf::Color(255 * i / 20, 255 * j / 20, 255 * i / 20 * j / 20));
}
}

sf::Texture texture;
texture.loadFromImage(img);
texture.setRepeated(true);

sf::Sprite sprite;
sprite.setTexture(texture);
sprite.setTextureRect({ 0, 0, 800, 600 });

while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}

if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
window.close();
}
}

window.clear();
window.draw(sprite);
window.display();
}

return EXIT_SUCCESS;
}

enter image description here

关于sfml - 重复纹理以适应 SFML 中的特定尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26517066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com