Можно ли получить пиксельный буфер при настройке с использованием функций cuda_gl_interop?
Я ознакомился с предметом и нахожусь в процессе реализации механизма параллельной трассировки лучей (в настоящее время использующего только пересечения лучевой сферы), однако мне кажется, что я могу отображать результаты только в окне GLUT или напрямую записывать в файл, а не в обоих. Я в растерянности относительно того, как этого можно достичь. В настоящее время я настраиваю cudaGraphicsResource и сопоставляю его с буферным объектом GL. Будучи относительно неопытным в OpenGL, я не был уверен, как можно получить данные о пикселях обратно в CPU.
РЕДАКТИРОВАТЬ: Извините. Когда я писал, я обнаружил ослепительно очевидную процедуру glReadPixels. Посмотрим на это.
1 ответ
Я обнаружил, что тот факт, что объект пиксельного буфера был связан с кодом CUDA, не имеет значения. Это было достаточно просто сделать вызов glReadPixels(0,0,DIM,DIM,GL_RBGA,GL_UNSIGNED_BYTE и bucketofdata). Проблема, с которой я до сих пор не полностью ответил самому себе, заключается в том, что вышеуказанный вызов завершится неудачей, если bucketofdata инициализируется с помощью malloc и работает, только если он объявлен как GLubyte bucketofdata[DIM*DIM*sizeof(uchar4)].