Я создаю изображение с openGL и читаю его с помощью glReadPixels ().
Теперь я хочу проанализировать эти данные. Я хочу распараллелить цикл, который выполняется на каждом пикселе и проверить его цвет с помощью CUDA. Проблема в том, что мне нужно передать данные из GPU в CPU
и снова в ГПУ.
Есть способ, которым я могу передать данные из glReadPixles () в CUDA без прохода через ЦП?
Может ли текстура памяти помочь мне?
Вам нужно будет использовать CUDA — API взаимодействия OpenGL.
Есть несколько примеров кодов CUDA в графика и разделы изображений, которые могут представлять интерес.
Я бы предложил начать с образец размытия по Гауссу, потому что я думаю, что поток обработки в нем близок к тому, что вы описываете (изменение каждого пикселя непосредственно перед отображением).
Вы не используете glReadPixels
потому что это возвращает данные обратно в процессор. Вместо этого вы регистрируете объект openGL в CUDA, чтобы он мог работать с CUDA, а затем отмените его регистрацию непосредственно перед отображением.
Других решений пока нет …