Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
Simple3DObject.hpp
1 
2 #pragma once
3 #include <Covellite/Covellite.hpp>
4 #include "Common.hpp"
5 
6 namespace events
7 {
8 
9 class Simple3DObject_t
10 {
11 public:
12  enum Id
13  {
14  Start = 0,
15  LightsChanged,
16  };
17 };
18 
19 namespace { Simple3DObject_t Simple3DObject; }
20 
21 } // namespace events
22 
23 namespace basement
24 {
25 
26 class Lights final
27 {
28 public:
29  enum Type
30  {
31  Ambient = 0,
32  Directional,
33  Red,
34  Green,
35  Blue,
36  PBR,
37  };
38 };
39 
55 class Simple3DObject final :
56  public Common
57 {
61 
62 public:
63  void Notify(int, const ::boost::any &) override;
64 
65 private:
66  Updater_t GetUpdater(void);
67 
68 private:
69  ObjectId_t BuildCamera(void);
70  ObjectId_t BuildShader(int, bool);
71  ObjectId_t BuildLights(int);
72  void BuildSimpleCubes(int, float);
73  void BuildInstanceCubes(int, int, float);
74  void BuildCubeData(int);
75  ObjectId_t BuildSimpleCubeObject(float, float, float);
76 
77 private:
78  Component_t::ComponentPtr_t m_pCubeRotation;
79  ObjectId_t m_CameraId;
80  ObjectId_t m_ShaderId;
81  ObjectId_t m_LightsId;
82  ::std::vector<Vertex_t> m_VertexData;
83  ::std::vector<int> m_IndexData;
84  ::std::vector<ObjectId_t> m_Cubes;
85  ::std::vector<float> m_InstanceData;
86 
87 public:
88  Simple3DObject(WindowExpanse_t &, const int, const int);
89  ~Simple3DObject(void);
90 };
91 
92 } // namespace basement
basement::Simple3DObject
Класс входит в проект Example Класс отрисовки простого 3D объекта для слоя Draw3DObject.
Definition: Simple3DObject.hpp:57
basement::Common
Класс входит в проект Example Класс общей логики отрисовки 3D сцены.
Definition: Common.hpp:31
basement::Simple3DObject::BuildShader
ObjectId_t BuildShader(int, bool)
Definition: Simple3DObject.cpp:197
basement::Simple3DObject::Notify
void Notify(int, const ::boost::any &) override
[Vertex format]
Definition: Simple3DObject.cpp:103
covellite::api::Component::Make
static ComponentPtr_t Make(const SourceParams_t &)
Функция создания объектов компонентов.
Definition: Component.inl:29
covellite::api::Component
Класс входит в проект Covellite.Api Класс компонента.
Definition: Component.hpp:35
covellite::expanse::IWindow
Класс входит в проект Covellite.Expanse Интерфейс класса окна.
Definition: IWindow.hpp:32
basement::Simple3DObject::BuildCamera
ObjectId_t BuildCamera(void)
Definition: Simple3DObject.cpp:135
basement
Definition: Common.hpp:10
basement::Simple3DObject::BuildLights
ObjectId_t BuildLights(int)
Definition: Simple3DObject.cpp:292
covellite::api::Vertex
Класс входит в проект Covellite.Api Класс формата вертексного буфера.
Definition: Vertex.hpp:34
basement::Simple3DObject::BuildSimpleCubeObject
ObjectId_t BuildSimpleCubeObject(float, float, float)
Definition: Simple3DObject.cpp:554