Geometry库
在我们提供的illustrator::geometry库中,提供了以下几种封装好的几何,您通过简单的接口就可以程序中生成它们,不需要像上面那样详细地定义VBO和IBO数据。最后我们通过一个简单案例,来学习怎么如何使用接口。
| 几何接口 | 描述 |
|---|---|
| _triangle(v0, v1, v2) | 三角形,需要指定三个顶点的位置坐标 |
| _quad(v0, v1, v2, v3) | 四边形,需要指定四个顶点的位置坐标 |
| _cube(min, max) | 立方体,需要指定最低点和最高点的位置坐标 |
| _cylinder(radius, height, slices) | 圆柱体,需要指定半径、高度和分割面个数 |
| _pipe(radius, height, slices) | 圆管面,需要指定半径、高度和分割面个数 |
| _sphere(radisu, slices, stacks) | 球面,指定半径、和两个方向的分割面个数 |
| _cone(radius, height, slices) | 圆锥面,指定半径、高度和分割面个数 |
| _disk(radius, slices) | 圆平面,指定半径和分割面个数 |
| _capsule(radius, height, slices, stacks) | 椭球面,指定半径和高度,以及两个方向的分割面个数 |
| _torus(radius, tubeRadius, sides, rings) | 圆环面,指定圆环半径、圆截面的半径、圆截面的分割个数和环分割个数 |
| _teapot(), _dragon(), _capsule(), _beast(), _buddha(), _bunny() | 这几个都是斯坦福标准模型,提供接口方便用户使用 |
在下面这个例子中,我们会创建一个teapot几何,还为它设置一个卡通的光影材质。
auto pixelSize = window.pixelSize();
auto background = _simpleBackground(_ivec2(pixelSize),
_clr4(0.9, 0.8, 0.7, 1.0));
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 });
下面是运行结果: