I'd like to declare GLSL shader strings inline using macro stringification:
#define STRINGIFY(A) #A const GLchar* vert = STRINGIFY( #version 120\n attribute vec2 position; void main() { gl_Position = vec4( position, 0.0, 1.0 ); } ); This builds and runs fine using VS2010 but fails to compile on gcc with:
error: invalid preprocessing directive #version Is there a way to use stringification like this in a portable manner?
I'm trying to avoid per-line quotes:
const GLchar* vert = "#version 120\n" "attribute vec2 position;" "void main()" "{" " gl_Position = vec4( position, 0.0, 1.0 );" "}" ; ...and/or line continuation:
const GLchar* vert = "\ #version 120\n \ attribute vec2 position; \ void main() \ { \ gl_Position = vec4( position, 0.0, 1.0 ); \ } \ ";