Можно ли сохранить результаты CUDA в доступной текстуре OpenGL? - PullRequest
3 голосов
/ 15 апреля 2010

Может ли CUDA использоваться для генерации текстур OpenGL? Я знаю, что это можно сделать, прочитав результаты CUDA обратно в системную память, а затем загрузив их в текстуру ... Но я бы хотел найти способ сохранить эту копию ... Можно ли использовать CUDA для генерации текстур?

Ответы [ 2 ]

4 голосов
/ 15 апреля 2010

Вроде.Вы не можете писать напрямую в текстуры из ядра, но вы можете сделать копию результатов из вашего ядра в сопоставленный текстуре cudaArray, не копируя его обратно в системную память.Посмотрите на cudaGraphicsGLRegisterImage(), cudaGraphicsMapResources() и cudaGraphicsSubResourceGetMappedArray().

2 голосов
/ 15 апреля 2010

Да, CUDA имеет функции API для обеспечения взаимодействия OpenGL

Используйте cudaGLRegisterBufferObject(GLuint bufObj) для регистрации в CUDA, а затем используйте cudaGLMapBufferObject( void ** devPtr, GLuint bufObj), чтобы получить указатель памяти устройства для управления буфером в вашем ядре CUDA.

Как только вы закончите, вы снимаете карту cudaGLUnmapBufferObject(GLuint bufObj) и затем отображаете.

Полное объяснение приведено в Руководстве по программированию CUDA, которое вы загружаете в CUDA Toolkit.

...