C ++ const char * помещает переменную / DEFINE в init

0

У меня есть константа char * variable с вершинным шейдерным кодом:

const char* FS_source_a =
    #include "fs_a.h"
 ;

в fs_a.h:

"#version 100\n"
"varying lowp vec4 v_color;\n"
"void main(void)\n"
"{\n"
        "gl_FragColor = v_color;\n"
"}\n";

Теперь у меня есть определенная/статическая переменная, и я хочу поместить ее в свой шейдерный код, например [pseudocode]:

"#version "+SHADER_VERSION+"\n"

Ну... Это возможно как-то, или я должен их конкатрировать? Я хочу сохранить исходный код шейдера в отдельном файле.

PS Это не проблема.

Теги:

1 ответ

0
Лучший ответ

Вы не можете делать то, что вы написали, но можете это сделать:

code.c

#include "code.h"
const char* FS_source_a = DEFINEDVALUE;

char FS_dest_a[1024] = {0};
sprintf(FS_dest_a, FS_source_a, 100);

code.h

#define DEFINEDVALUE "#version %d\n\
varying lowp vec4 v_color;\n\
void main(void)\n\
{\n\
    gl_FragColor = v_color;\n\
}\n"
  • 0
    А как туда поставить переменную?
  • 0
    Если это переменная времени выполнения, вы не можете определить ее так, вам нужно будет изменить FS_source_a . Смотрите мой фиксированный ответ
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню