1cb93a386Sopenharmony_ci//
2cb93a386Sopenharmony_ci// Copyright 2014 The ANGLE Project Authors. All rights reserved.
3cb93a386Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be
4cb93a386Sopenharmony_ci// found in the LICENSE file.
5cb93a386Sopenharmony_ci//
6cb93a386Sopenharmony_ci// geometry_utils:
7cb93a386Sopenharmony_ci//   Helper library for generating certain sets of geometry.
8cb93a386Sopenharmony_ci//
9cb93a386Sopenharmony_ci
10cb93a386Sopenharmony_ci#ifndef UTIL_GEOMETRY_UTILS_H
11cb93a386Sopenharmony_ci#define UTIL_GEOMETRY_UTILS_H
12cb93a386Sopenharmony_ci
13cb93a386Sopenharmony_ci#include <cstddef>
14cb93a386Sopenharmony_ci#include <vector>
15cb93a386Sopenharmony_ci
16cb93a386Sopenharmony_ci#include <GLES2/gl2.h>
17cb93a386Sopenharmony_ci
18cb93a386Sopenharmony_ci#include "common/vector_utils.h"
19cb93a386Sopenharmony_ci#include "util/util_export.h"
20cb93a386Sopenharmony_ci
21cb93a386Sopenharmony_cistruct ANGLE_UTIL_EXPORT SphereGeometry
22cb93a386Sopenharmony_ci{
23cb93a386Sopenharmony_ci    SphereGeometry();
24cb93a386Sopenharmony_ci    ~SphereGeometry();
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ci    std::vector<angle::Vector3> positions;
27cb93a386Sopenharmony_ci    std::vector<angle::Vector3> normals;
28cb93a386Sopenharmony_ci    std::vector<GLushort> indices;
29cb93a386Sopenharmony_ci};
30cb93a386Sopenharmony_ci
31cb93a386Sopenharmony_ciANGLE_UTIL_EXPORT void CreateSphereGeometry(size_t sliceCount,
32cb93a386Sopenharmony_ci                                            float radius,
33cb93a386Sopenharmony_ci                                            SphereGeometry *result);
34cb93a386Sopenharmony_ci
35cb93a386Sopenharmony_cistruct ANGLE_UTIL_EXPORT CubeGeometry
36cb93a386Sopenharmony_ci{
37cb93a386Sopenharmony_ci    CubeGeometry();
38cb93a386Sopenharmony_ci    ~CubeGeometry();
39cb93a386Sopenharmony_ci
40cb93a386Sopenharmony_ci    std::vector<angle::Vector3> positions;
41cb93a386Sopenharmony_ci    std::vector<angle::Vector3> normals;
42cb93a386Sopenharmony_ci    std::vector<angle::Vector2> texcoords;
43cb93a386Sopenharmony_ci    std::vector<GLushort> indices;
44cb93a386Sopenharmony_ci};
45cb93a386Sopenharmony_ci
46cb93a386Sopenharmony_ciANGLE_UTIL_EXPORT void GenerateCubeGeometry(float radius, CubeGeometry *result);
47cb93a386Sopenharmony_ci
48cb93a386Sopenharmony_ci#endif  // UTIL_GEOMETRY_UTILS_H
49