gpt4 book ai didi

c++ - 是否可以绘制一个 Drawable 并从中获取位图?

转载 作者:可可西里 更新时间:2023-11-01 16:38:00 28 4
gpt4 key购买 nike

是否可以将绘制的 Drawable 作为 Texture(位图)获取?请问我该怎么做?


我的尝试

我修改了绿色圆圈示例。现在它真的被绘制成位图了...

但它就是这样绘制的:

Unsmooth Arc.

我想要抗锯齿

使用 RenderWindow 类,我可以通过传递 ContextSettings 来设置抗锯齿功能。使用@Mario 的建议,我需要RenderTexture,不幸的是我无法控制它的ContextSettings

@AlexG的建议

我已经创建了一个 Context,但是我的编译器说 my_test.cc:9:57: error: use of deleted function 'sf::Context::Context(const sf: :上下文&)'。呃!还有其他选择吗?

#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;
}

最佳答案

您可以像@Mario 所说的那样将形状绘制到sf::RenderTexture。如果将上下文设置传递给 sf::Context,则可以像设置窗口一样设置抗锯齿级别(只要 sf::RenderTexture 是当前的上下文)。

希望对您有所帮助!

关于c++ - 是否可以绘制一个 Drawable 并从中获取位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46037260/

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