Domanda

L'ho visto fatto molto tempo fa con il codice shader hlsl / glsl - usando un #include sul file del codice sorgente che incolla il codice in un char * in modo che nessun file IO si verifichi in fase di esecuzione.

Se dovessi rappresentarlo come pseudo-codice, sarebbe un po 'così:

#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");

Ora, ovviamente, che #define non funzionerà perché proverà semplicemente a usare quelle virgolette per iniziare le stringhe.

È stato utile?

Soluzione

Vedi i motori di fisica dei proiettili che utilizzano OpenCL per come farlo in kernel .

In sorgente C ++ / C

#define MSTRINGIFY(A) #A
char* stringifiedSourceCL = 
#include "VectorAddKernels.cl"

Nella fonte OpenCL

MSTRINGIFY(
   __kernel void VectorAdd(__global float8* c)
   {
    // snipped out OpenCL code...
    return;
   }
);

Altri suggerimenti

Secondo questo , è impossibile, ma puoi usare xxd -i per archiviare lo stesso effetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top