我試圖複製sf::RenderTexture
(與sf::Image
& sf::Text
就可以了),以Opencv Mat對象。我們可以通過將RenderTexture複製到圖像
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);
轉換的sf::Image
到cv::Mat
(opencv的)據我所知,在SFML我們不能添加文本直接sf::Image
但我們必須使用RenderWindow的或渲染紋理爲。我想唯一的解決方法是加載在下列順序
SF ::圖片對象 - > SF ::紋理 - > SF ::雪碧 - > SF ::渲染紋理
SF ::文本 - > SF ::渲染紋理
最後複製渲染紋理順豐::圖像,然後將其轉換爲CV ::墊
我想這將需要很長時間才能複製回SF ::渲染紋理順豐::圖片。
其他解決方法?像使用sf :: Image :: loadFromMemory();
感謝您的回答。你可以詳細闡述一下_「你可能想直接使用freetype並且不把字體數據移動到GPU上」_ –
Freetype是一個用於加載和渲染字體的庫。 SFML在內部使用freetype,然後將呈現的字符作爲sf :: Textures上傳到GPU。既然你想要一個「軟件」渲染器,你可以自己使用freetype,然後渲染到「RAM」。你如何做到這一點,超出了這個問題。 – Lukas