Copy RenderTexture to Image
我正在尝试将
1 2 3 4 | sf::Image img; cv::Size size(img.getSize().x, img.getSize().y); cv::Mat mat(size,CV_8UC4, (void*)img.getPixelsPtr(), cv::Mat::AUTO_STEP); cv::cvtColor(mat, mat, cv::COLOR_RGBA2BGRA); |
据我所知,在SFML中,我们无法将文本直接添加到
sf::Image --> sf::Texture --> sf::Sprite -->sf::RenderTexture
sf::Text --> sf::RenderTexture
最后将RenderTexture复制到sf :: Image,然后将其转换为cv :: Mat
我想将sf :: RenderTexture复制回sf :: Image将花费很长时间。
还有其他解决方法吗? 就像使用sf :: Image :: loadFromMemory();
附注:此处和此处的一些参考
不,关于SFML,实际上没有其他选择。 从VRAM复制到RAM的速度不是很快,但是仍然应该能够以令人满意的帧速率执行。 也许您应该尝试一下,看看性能是否确实会影响您的方案。
这里的问题是SFML在GPU空间中运行,因此文本渲染是为了用GPU渲染带有sprite的类似东西,但是您实际上想要的是CPU渲染文本和sprite。
如果仅翻译精灵(不缩放/旋转),则在
对于文本渲染,您可能需要直接使用freetype,而不要将字体数据移动到GPU。