0
我想是这样的:如何将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";