是否可以将绘制的Drawable
作为Texture
(位图)?我怎么能这样做呢?
我的尝试
我修改了绿圈示例。现在它真的被绘制为位图...
但它就是这样绘制的:
我希望抗锯齿。
使用RenderWindow
类,我可以通过ContextSettings
传递抗锯齿。使用@ Mario的建议我需要RenderTexture
,不幸的是我无法控制ContextSettings
。
@ AlexG的建议
我创建了Context
,但我的编译器说my_test.cc:9:57: error: use of deleted function 'sf::Context::Context(const sf::Context&)'
。呃!还有其他选择吗?
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
int main()
{
sf::ContextSettings settings =
sf::ContextSettings(0, 0, 6);
sf::Context context = sf::Context(settings, 200, 200);
context.setActive(true);
sf::RenderWindow window(
sf::VideoMode(200, 200), "sfml test", sf::Style::Default,
settings
);
sf::RenderTexture cacheTexture;
if (!cacheTexture.create(200, 200)) return 0;
cacheTexture.setSmooth(true);
sf::CircleShape shape(100.f, 75);
shape.setFillColor(sf::Color::Green);
cacheTexture.setActive(true);
cacheTexture.draw(shape);
cacheTexture.setActive(false);
context.setActive(false);
sf::Sprite sprite = sf::Sprite(cacheTexture.getTexture());
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(sprite);
window.display();
}
return 0;
}
答案 0 :(得分:5)
您可以将形状绘制为sf::RenderTexture
,就像@Mario所说的那样。如果将上下文设置传递给sf::Context
,则可以像设置窗口一样设置抗锯齿级别(只要sf::RenderTexture
是当前上下文)。
希望有所帮助!
答案 1 :(得分:3)
这样做非常简单。只需将您的drawable绘制到所需大小的sf::RenderTexture
,然后您可以使用sf::RenderTexture::getTexture()
来获取可以使用的纹理或保存到文件中。