6

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

これを擬似コードとして表すと、次のようになります。

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

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

4

2 に答える 2

12

カーネルに対してこれを行う方法については、弾丸物理エンジンによるOpenCLの使用を参照してください。

C ++/Cソースの場合

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

OpenCLソースで

MSTRINGIFY(
   __kernel void VectorAdd(__global float8* c)
   {
    // snipped out OpenCL code...
    return;
   }
);
于 2011-02-17T20:51:00.830 に答える
4

これによると、それは不可能ですがxxd -i、同じ効果をアーカイブするために使用することができます。

于 2009-09-12T17:14:09.363 に答える