我试图将瓷砖的等轴测图绘制到RenderTexture
。问题是我在RenderTexture
中绘制到负坐标的任何内容都没有显示,这意味着整个地图被切成两半。
显示问题的简单示例。
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。有没有办法解决这个问题而不会抵消我的整个地图(以及所有实体),所以它只能在正坐标中?
答案 0 :(得分:2)
感谢您建议使用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)。然后在渲染之前将其抵消。