使用材质库
从之前的教程中,我们看到材质系统涉及到OpenGL的可编程着色器、状态参数,对于开发者来说,直接编写这些着色器程序或更改状态参数,开发成本过高,因此我们提供了illustrator::material库,包含了丰富的材质类型、着色器类型、状态类型,下面介绍几个常用的接口类:
| 材质接口 | 描述 |
|---|---|
| _material_head_light(color) _material_head_light(image) | 头灯光影的材质类型,它的参数可以是颜色、一张图片、或者环境贴图 |
| _material_outline(color) _material_shaded(color) | |
| _material_line(color,width,style) | 几何线的材质,它的参数包括颜色、线宽和线段类型,线段类型可以是:Solid, Dash, Dot, DashDot, DashDotDot |
在下面这个例子中,我们会创建一个teapot几何,然后使用材质库的接口,为它设置不同的材质。
auto pixelSize = window.pixelSize();
auto background = _simpleBackground(_ivec2(pixelSize),
_clr4(0.9, 0.8, 0.7, 1.0));
// 使用material中的_toon接口,快速定义卡通材质
auto material = _toon(_clr3(0.5, 0.6, 0.8));
// 使用geometry库中的_teapot接口,便捷构建几何体
auto geometry = _teapot();
auto primitive = _primitive(geometry, material);
auto node = _node({ primitive });
auto camera = _camera();
auto pass = _pass(node, background, camera);
auto scene = _scene({ pass });
下面是运行结果: