Tôi muốn tuyên bố chuỗi GLSL shader inline sử dụng stringification vĩ mô:GCC, xâu chuỗi và nội tuyến GLSL?
#define STRINGIFY(A) #A
const GLchar* vert = STRINGIFY(
#version 120\n
attribute vec2 position;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
}
);
này được xây dựng và chạy tốt sử dụng VS2010 nhưng thất bại trong việc biên dịch trên gcc
với:
error: invalid preprocessing directive #version
Có cách nào để sử dụng stringification như thế này một cách di động?
Tôi đang cố gắng để tránh mỗi dòng trích dẫn:
const GLchar* vert =
"#version 120\n"
"attribute vec2 position;"
"void main()"
"{"
" gl_Position = vec4(position, 0.0, 1.0);"
"}"
;
... và/hoặc tiếp tục dòng:
const GLchar* vert = "\
#version 120\n \
attribute vec2 position; \
void main() \
{ \
gl_Position = vec4(position, 0.0, 1.0); \
} \
";
Tôi thích nhắm mục tiêu mở rộng GLSL để công trình này tuyệt vời! – genpfault