Frage

Ich habe das schon vor langer Zeit mit HLSL / GLSL Shader-Code getan gesehen - eine #include auf der Quellcode-Datei, die den Code in eine char* Paste, so dass keine Datei IO zur Laufzeit geschieht

.

Wenn ich es als Pseudo-Code darstellen, wäre es ein wenig wie folgt aussehen:

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

Jetzt natürlich, dass #define nicht funktionieren wird, weil es nur würde versuchen, diese Anführungszeichen zu verwenden Strings zu starten.

War es hilfreich?

Lösung

Sehen Sie die Kugel Physik-Engines Verwendung von OpenCL für wie tun dies auf eine kernel .

In C ++ / C-Quelle

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

In der OpenCL Quelle

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

Andere Tipps

Nach diese , es ist nicht möglich, aber Sie können xxd -i verwenden, um die gleiche Wirkung archieve.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top