Как нарисовать OpenCL рассчитанные пиксели на экране с OpenGL? - PullRequest
13 голосов
/ 11 июля 2011

Я не хочу делать некоторые вычисленные пиксели с OpenCL и отображать их прямо на дисплее без циклического обращения ЦП.Я мог бы использовать совместимость OpenCL с OpenGL и писать в банки текстур графического процессора и отображать текстуру с OpenGL.Мне было интересно, что будет лучшим способом сделать это, так как мне не нужны никакие 3D-вещи, только 2-пиксельное изображение.

1 Ответ

14 голосов
/ 11 июля 2011

Лучшим способом было бы использовать взаимодействие OpenCL / OpenGL, если ваша реализация OpenCL поддерживает это.Это позволяет OpenCL получать доступ к определенным объектам OpenGL (объектам буфера и текстурам / визуализаторам буфера).Вы не сможете получить прямой доступ к кадровому буферу OpenGL по умолчанию (т.е. к дисплею), но вы сможете получить доступ к изображению, привязанному к объекту кадрового буфера .Оттуда вы можете, в OpenGL, сделать блик фреймбуфера к фреймбуферу по умолчанию.Ничто не коснется памяти процессора.

Вам нужно будет изучить особенности CL / GL interop , чтобы узнать подробности.Основная идея заключается в том, что вы создаете рендер-буфер в OpenGL (который вы привязываете к FBO).Затем вы передаете этот рендер-буфер в OpenCL и выполняете вычисления в рендер-буфере.После этого вы выполните glBlitFramebuffer, чтобы скопировать данные из буфера рендеринга в кадровый буфер по умолчанию, а затем поменять местами буферы для его отображения.

...