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