编译webgl的着色器时的宏

时间:2012-08-07 14:42:40

标签: macros shader webgl

在OpenGL ES 2中,您可以将字符串数组设置为着色器源

void ShaderSource( uint shader, sizei count, const char **string, const int *length );

可用于将“注入”宏到着色器源中。 WebGL中的相应函数只占用一个字符串。

void shaderSource(WebGLShader shader, DOMString source)

是唯一可以使用宏手动将它们插入源字符串吗?

1 个答案:

答案 0 :(得分:0)

我不确定inject macros

的含义
const char* str1 = "foo";
const char* str2 = "bar";
const char* strings[] = { str1, str2, }

glShaderSource(shader, 2, strings, NULL);

在功能上等同于

var str1 = "foo";
var str2 = "bar";
var strings = [str1, str2];
gl.shaderSource(shader, strings.join(""));

所以,回答你的问题。如果要插入宏,请将它们添加到您提供给gl.shaderSource的字符串中。宏没有什么特别之处,它们来自哪个字符串。就GL而言,它只是一个大字符串。