Какой самый быстрый способ прочитать буфер экрана с использованием CUDA (Весь экран, а не только окно)?
Могу ли я сделать это, не копируя тонны пикселей между хостом и устройством?
Могу ли я получить доступ к этому конкретному буферу напрямую?CUDA: самый быстрый способ чтения буфера отображения?
ответ
Отдайте объект буфера визуализации openGL, затем используйте CUDA OpenGL interop, чтобы сопоставить его указателю устройства и прочитать его в ядре CUDA. Вы также можете сделать эквивалент с помощью Direct3D.
См. Graphics Samples, входящий в комплект CUDA SDK.
Спасибо за ответ. Но проблема в том, как я могу отобразить буфер визуализации для экрана ENTIRE (без копирования буфера в host mem)? Например, как я могу уловить скриншот, включая начальное меню, значки на рабочем столе? – Kh40tiK
Это не вопрос CUDA, и вы этого не задали. Вы должны опубликовать это как отдельный вопрос или удалить тег CUDA. Быстрый google появился [это] (http://blogs.msdn.com/b/dsui_team/archive/2013/03/25/ways-to-capture-the-screen.aspx). Если бы мой ответ был полезным, пожалуйста, поддержите и/или принимайте. – harrism
Я не верю, что есть * любой * способ чтения экранного буфера с использованием CUDA. – talonmies
Я новичок. Можете ли вы дать мне больше объяснений по этому поводу? Что может сделать CUDA? Нужно ли мне обращаться к VGA-памяти? – Kh40tiK
Замените буфер gl перед отправкой в буфер отображения. GL interop. –