質問

これはhlsl / glslシェーダーコードでかなり前に行われたことを見てきました。ソースコードファイルで #include を使用して、コードを char * に貼り付けます。実行時にファイルIOが発生しないようにします。

仮コードとして表現する場合、次のようになります。

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

もちろん、 #define は文字列を開始するためにそれらの引用符を使用しようとするだけなので、機能しません。

役に立ちましたか?

解決

これを行う方法カーネル

C ++ / Cソースの場合

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

OpenCLソース内

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

他のヒント

これによると、不可能ですが、 xxd -i を使用して同じ効果を実現できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top