Я хотел бы что-то вроде:Как включить заголовок Qt в ядро?
#include <QImage>
void __kernel dither(__global int* image, __global int* result)
{
int red = qRed(image[get_global_id(0)]);
//...
}
Но я получаю сообщение об ошибке выполнения:
Invalid parameter passed to C runtime function.
Как решить эту проблему?
Ведущий:
std::ifstream sourceFile("OrderedDitheringKernel.cl");
std::string kernelCode(std::istreambuf_iterator<char>(sourceFile),(std::istreambuf_iterator<char>()));
qDebug() << QString::fromStdString(kernelCode);
sources.push_back({kernelCode.c_str(), kernelCode.length()});
cl::Program program(context, sources);
if (program.build({defaultDevice}) != CL_SUCCESS)
{
std::cerr << "Error while building kernel: " <<
program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(defaultDevice) << std::endl;
exit(1);
}
else
qDebug() << "Kernel compiled succesfully\n";