Pergunta

Eu vi este feito há muito tempo com HLSL / GLSL shader código -. Usando um #include no arquivo de código fonte que cola o código em um char* para que nenhum arquivo IO acontece em tempo de execução

Se eu fosse para representá-lo como pseudo-código, ele ficaria um pouco como este:

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

Agora, é claro que #define não está indo para o trabalho, porque ele vai apenas tentar usar essas aspas para começar strings.

Foi útil?

Solução

Veja os motores de bala física utilização de OpenCL para como fazer isso para um kernel do .

Em C ++ / source C

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

Na fonte OpenCL

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

Outras dicas

De acordo com a este , é não é possível, mas você pode usar xxd -i para archieve o mesmo efeito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top