Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/ogre_src_v1-9-0/OgreMain/include/OgreLodConfig.h @ 148

Last change on this file since 148 was 148, checked in by patricwi, 6 years ago

Added new dependencies for ogre1.9 and cegui0.8

File size: 3.2 KB
Line 
1/*
2 * -----------------------------------------------------------------------------
3 * This source file is part of OGRE
4 * (Object-oriented Graphics Rendering Engine)
5 * For the latest info, see http://www.ogre3d.org/
6 *
7 * Copyright (c) 2000-2013 Torus Knot Software Ltd
8 *
9 * Permission is hereby granted, free of charge, to any person obtaining a copy
10 * of this software and associated documentation files (the "Software"), to deal
11 * in the Software without restriction, including without limitation the rights
12 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 * copies of the Software, and to permit persons to whom the Software is
14 * furnished to do so, subject to the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included in
17 * all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 * THE SOFTWARE.
26 * -----------------------------------------------------------------------------
27 */
28
29#ifndef __LogConfig_H_
30#define __LogConfig_H_
31
32#include "OgrePrerequisites.h"
33#include "OgreMesh.h"
34#include "OgreLodStrategy.h"
35
36namespace Ogre
37{
38/**
39 * @brief Structure for automatic LOD configuration.
40 */
41struct LodLevel {
42        /**
43         * @brief Type of the reduction.
44         *
45         * Note: The vertex count is determined by unique vertices per submesh.
46         * A mesh may have duplicate vertices with same position.
47         */
48        enum VertexReductionMethod {
49                /**
50                 * @brief Percentage of vertexes to be removed from each submesh.
51                 *
52                 * Valid range is a number between 0.0 and 1.0
53                 */
54                VRM_PROPORTIONAL,
55
56                /**
57                 * @brief Exact vertex count to be removed from each submesh.
58                 *
59                 * Pass only integers or it will be rounded.
60                 */
61                VRM_CONSTANT,
62
63                /**
64                 * @brief Reduces the vertices, until the cost is bigger then the given value.
65                 *
66                 * Collapse cost is equal to the amount of artifact the reduction causes.
67                 * This generates the best LOD output, but the collapse cost depends on implementation.
68                 */
69                VRM_COLLAPSE_COST
70        };
71
72        /**
73         * @brief Distance to swap the LOD.
74         *
75         * This depends on LodStrategy.
76         */
77        Real distance;
78
79        /**
80         * @brief Reduction method to use.
81         *
82         * @see ProgressiveMeshGenerator::VertexReductionMethod
83         */
84        VertexReductionMethod reductionMethod;
85
86        /**
87         * @brief The value, which depends on reductionMethod.
88         */
89        Real reductionValue;
90
91        /**
92         * @brief This is set by ProgressiveMeshGenerator::build() function.
93         *
94         * Use Mesh::getNumLodLevels() for generated LOD count.
95         */
96        size_t outUniqueVertexCount;
97
98        /**
99         * @brief Whether the LOD level generation was skipped, because it has same vertex count as the previous LOD level.
100         */
101        bool outSkipped;
102};
103
104struct LodConfig {
105        MeshPtr mesh;
106        LodStrategy* strategy;
107        typedef vector<LodLevel>::type LodLevelList;
108        LodLevelList levels;
109};
110}
111#endif
Note: See TracBrowser for help on using the repository browser.