Pregunta

He visto esto hace mucho tiempo con el código de sombreador hlsl / glsl, usando un #include en el archivo de código fuente que pega el código en un char * para que no ocurra ningún archivo IO en tiempo de ejecución.

Si tuviera que representarlo como pseudocódigo, se vería un poco así:

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

Ahora, por supuesto, que #define no funcionará porque solo intentará usar esas comillas para iniciar las cadenas.

¿Fue útil?

Solución

Vea el uso de los motores de física de bala de OpenCL para cómo hacer esto a un kernel .

En fuente C ++ / C

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

En la fuente OpenCL

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

Otros consejos

De acuerdo con esto , es no es posible, pero puede usar xxd -i para archivar el mismo efecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top