я не знаю, как начать проект по реализации этого:OpenCL изображения вычислений, а затем экран рендеринг
- матрица из 16 битых целых загружаются в память GPU (Это серая шкала радиологического изображение)
- Вторая матрица из 16 бит целых чисел вычисляется из первого массива путем применения функции (например, алгоритм усиления контраста)
- Область интересов второй матрицы преобразуется в изображение RGB для отображения на экране ,
Я могу сделать шаг один и два, и я застрял на шаге 3! Я реализовал все это в CPU, так что это не вопрос обработки изображений в масштабе серого или RGB, а также создание растровых изображений для отображения. Я также реализовал первые два шага в OpenCL, а затем прочитал результирующую матрицу в памяти процессора для преобразования растрового изображения RGB, а затем отобразил ее. Но это, конечно, медленное из-за перемещения данных назад и вперед между памятью CPU и GPU (изображения действительно большие: более 100 мегапикселей).
Любая помощь приветствуется. Я программирую Delphi 10, но пример кода на C/C++ в порядке. У меня есть VC2010 и успешно перестроить образец приложения NVidia OpenCL oclNbody.
Что вы пробовали уже не работали? Вы можете создавать изображения OpenCL для источника оттенков серого и результата RGB или RGBA и передавать их в ядро (ы) вычисления. – Dithermaster
Для шага 3 я ничего не создал, так как не знаю, как это сделать. Это то, что я прошу на самом деле. Я не знаю, как иметь изображение в OpenCL (clCreateImage), отображаемое на экране в окне, созданном Windows API CreateWindow. – fpiette
Я нашел некоторый исходный код, очень близкий к тому, что мне нужно (http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_OpenCL_Programming_User_Guide2.pdf глава E.1.1 создание контекста CL из GL Context, используя Win32 API). К сожалению, вызов clGetGLContextInfoKHR вызывает нарушение доступа, которое вызвано переменной платформы, переданной аргументу функции через атрибут. Я поместил этот исходный код в Delphi, и это может быть преступником. Если бы у меня была полная программа-образец на C, я мог бы сравнить версию C с моей версией Delphi во время выполнения и понять, что не так. – fpiette