ShaderSource

new SuperMap3D.ShaderSource(options)

包含各种输入的对象,这些输入将组合成最终的 GLSL 着色器字符串。
Name Type Description
options Object optional 具有以下属性的对象:
Name Type Default Description
sources Array.<String> optional 字符串数组,包含着色器的 GLSL 代码。
defines Array.<String> optional 包含要 #define 的 GLSL 标识符的字符串数组。
pickColorQualifier String optional GLSL限定符,uniformvarying,用于输入czm_pickColor。当定义时,将生成一个拾取片段着色器。
includeBuiltIns Boolean true optional 如果为true,将合并着色器中引用的内置函数包含在内。如果这个着色器将成为另一个着色器的源代码,为了避免重复函数,请设置为false。
Throws:
  • DeveloperError : options.pickColorQualifier 必须是 "统一 "或 "变化 "的。
Example:
// 1. Prepend #defines to a shader
var source = new SuperMap3D.ShaderSource({
  defines : ['WHITE'],
  sources : ['void main() { \n#ifdef WHITE\n gl_FragColor = vec4(1.0); \n#else\n gl_FragColor = vec4(0.0); \n#endif\n }']
});

// 2. Modify a fragment shader for picking
var source = new SuperMap3D.ShaderSource({
  sources : ['void main() { gl_FragColor = vec4(1.0); }'],
  pickColorQualifier : 'uniform'
});

Methods

createCombinedFragmentShader()String

创建一个单一字符串,其中包含完整的片段着色器组合以及所有依赖项和定义。
Returns:
组合着色器字符串。

createCombinedVertexShader()String

创建一个单一字符串,其中包含完整的组合顶点着色器以及所有依赖项和定义。
Returns:
组合着色器字符串。