2013-12-23 54 views
0

我有常量字符*與頂點着色器代碼變量:C++常量字符*把變量/ DEFINE上初始化

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"; 

現在,我已經一些定義/靜態變量,我希望把它放在我的shader代碼,這樣[僞]:

"#version "+SHADER_VERSION+"\n" 

嗯....這是可能以某種方式,或者我有孔卡他們?我想將着色器源代碼保存在單獨的文件中。

P.S.這不是opengl問題。

回答

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

而如何把變量存在? – tower120

+0

如果是運行時變量,你無法定義它這樣,你將需要修改'FS_source_a'。查看我的固定答案 – nrathaus

+0

是否有可能知道FS_dest_a的大小,而不使用:char FS_dest_a [1024]?手工計算符號數量。 – tower120