gpt4 book ai didi

c++ - SFML 渲染纹理 : cant draw to negative coordinates

转载 作者:行者123 更新时间:2023-11-30 02:22:16 24 4
gpt4 key购买 nike

我正在尝试将图 block 的等轴测图绘制到 RenderTexture。问题是我在 RenderTexture 中绘制到负坐标的任何东西都没有显示,这意味着整个 map 被切成两半。

Screenshot

显示问题的简单示例。

sf::RenderTexture renderTexture;
renderTexture.create(64 * width, 32 * height);

sf::RectangleShape rectangleShape(sf::Vector2f(100, 100));
rectangleShape.setFillColor(sf::Color::Red);
rectangleShape.setPosition(-50, -50);
renderTexture.draw(rectangleShape);

renderTexture.display();

sf::Sprite sprite1;
sprite1.setPosition(0, 0);
sprite1.setTexture(renderTexture.getTexture());

window.draw(sprite1);

只会显示矩形的 1/4。有什么方法可以在不偏移我的整个 map (以及所有实体)的情况下解决这个问题,所以它只在正坐标中?

最佳答案

感谢您建议使用 View ,0x5453!

如果其他人遇到这个问题,这是我的解决方案;

sf::RenderTexture renderTexture;
renderTexture.create(tilesize * mapWidth, tilesize * mapHeight);
sf::View view = renderTexture.getView();
view.setCenter(0, 0);
renderTexture.setView(view);

// Draw stuff to the renderTexture

renderTexture.display();
sf::Sprite sprite;
sprite.setTexture(renderTexture.getTexture());
sprite.setPostion(-(width*tilesize)/2), -(width*tilesize)/2)
window.draw(sprite);

非常简单,但这就是它的要点。

基本上将渲染纹理的中心设置为屏幕坐标 (0, 0)。然后在渲染之前将其偏移回来。

关于c++ - SFML 渲染纹理 : cant draw to negative coordinates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47401231/

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