我的應用程序包含一個短的函數,它將SFML GPU緩衝區(sf::RenderTexture
轉換爲sf::Image
)複製到二維顏色數組中(存儲在RAM中並由CPU處理)。這裏是代碼:SFML - 優化從GPU複製到RAM
const sf::Image image = renderTexture.getTexture().copyToImage();
for (Point_t y = 0; y < totalHeight; ++y)
{
for (Point_t x = 0; x < totalWidth; ++x)
{
const sf::Color& c = image.getPixel(x, totalHeight - y - 1);
// here processing this c variable
}
}
的問題是:與屏幕256x64px我越來越喜歡20 FPS - 這是太低了,我需要一個像50 FPS在我的應用程序。我怎樣才能提高這個過程的性能?
也許我應該使用其他庫,將加快步伐?
編輯:
有人給我應該用真實的影像庫,而不是SFML建議。但重點在於SFML是用於實時旋轉對象等的完美庫,所以我會堅持使用SFML,只需要優化或其他方式將緩衝區從GPU複製到CPU。
你檢查什麼,走的是時間,複印電話還是您的處理? – nvoigt
你需要多久調用一次上面的代碼? – AlexxanderX
複製過程正在進行。我在每一次可能的時間循環調用這段代碼,我需要50-60 FPS,所以這段代碼應該每秒執行50-60次,但現在只有20次。也許有另一種方法可以做到這一點? –