Использование OpenGL из ArrayFire

Если у меня уже есть af::array A в памяти графического процессора, какова процедура его передачи в OpenGl? Мое намерение состоит в том, чтобы построить его в виде линейного графика с использованием OpenGl, но я не уверен, как справиться с тем фактом, что бэкэндом Arrayfire может быть OpenCl, CUDA или даже ЦП. Как OpenGl становится владельцем массива? Я бы предпочел избегать копирования, если это возможно.

Отдельное примечание: если бы я использовал встроенную библиотеку forge для построения графиков в Arrayfire, я обнаружил, что если я буду следовать инструкциям по построению графика, нажав и удерживая данные на графике и перетащив их куда-нибудь еще, график данных перемещается из своего исходного положения и больше не выровнен правильно по оси. Есть ли способ исправить это?


person HamzaAB    schedule 14.03.2018    source источник
comment
Вам нужно как минимум два шейдера, вершинный и фрагментный. Если ваш массив представляет собой данные вершин GLBuffer, используйте его в своих шейдерах. Предлагаю David_Wolff Поваренную книгу языка шейдинга OpenGL4. Это своего рода Modern OpenGL RedBook.   -  person Victor Gubin    schedule 15.03.2018
comment
@VictorGubin Я знаю, как использовать OpenGL сам по себе, я хотел бы знать, как заполнить буфер OpenGL массивом информации, полученным из того, что у меня есть в Arrayfire, без необходимости ненужных копий для установки буфера OpenGL.   -  person HamzaAB    schedule 15.03.2018
comment
Общий доступ к данным OpenCL и OpenGL   -  person Victor Gubin    schedule 15.03.2018
comment
И строить с OpenCL. BUILD_OPENCL с помощью cmake.   -  person Victor Gubin    schedule 15.03.2018


Ответы (1)


@ХамзаАБ

То, о чем вы спрашиваете, известно как взаимодействие GL-CUDA или GL-OpenCL, если вы еще не знаете об этом, что является областью Forge пытается обратиться. Вы можете просмотреть заголовок ComputeCopy.h внутри репозитория forge, чтобы понять, как сделать взаимодействие OpenGL.

Сказав это, вы хотите сбросить преобразование, которое вы делаете, на линейный график, если вы хотите сбросить его, тогда есть способ. Удерживая левый элемент управления, нажмите среднюю кнопку мыши, чтобы сбросить панорамирование/масштабирование линейного графика. Если вы столкнулись с какой-либо другой проблемой с линейным графиком forge, вы можете задать вопрос здесь, и мы постараюсь разобраться.

PS. Я один из основных разработчиков ArrayFire.

person pradeep    schedule 15.03.2018