Welcome to mirror list, hosted at ThFree Co, Russian Federation.

display_list.hpp « graphics - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d87fd4a15afe65ae3d0d47fb9c953426c6c51d41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#pragma once

#include "defines.hpp"
#include "display_list_renderer.hpp"
#include "opengl/base_texture.hpp"
#include "opengl/buffer_object.hpp"

#include "../std/set.hpp"

namespace graphics
{
  class DisplayList
  {
  private:

    typedef gl::GeometryRenderer::DrawGeometry DrawGeometryCmd;
    typedef gl::GeometryRenderer::DiscardStorage DiscardStorageCmd;
    typedef gl::GeometryRenderer::FreeTexture FreeTextureCmd;
    typedef gl::GeometryRenderer::UnlockStorage UnlockStorageCmd;
    typedef gl::GeometryRenderer::FreeStorage FreeStorageCmd;
    typedef gl::GeometryRenderer::ApplyBlitStates ApplyBlitStatesCmd;
    typedef gl::GeometryRenderer::ApplyStates ApplyStatesCmd;
    typedef gl::GeometryRenderer::ApplySharpStates ApplySharpStatesCmd;
    typedef gl::GeometryRenderer::UploadData UploadDataCmd;

    list<shared_ptr<Command> > m_commands;

    typedef DisplayListRenderer::TextureRef TextureRef;
    typedef DisplayListRenderer::StorageRef StorageRef;

    set<TextureRef> m_textures;
    set<StorageRef> m_storages;

    DisplayListRenderer * m_parent;
    bool m_isDebugging;

    DisplayList(DisplayListRenderer * parent);

    friend class DisplayListRenderer;

  public:

    ~DisplayList();

    void applyStates(shared_ptr<ApplyStatesCmd> const & cmd);
    void applyBlitStates(shared_ptr<ApplyBlitStatesCmd> const & cmd);
    void applySharpStates(shared_ptr<ApplySharpStatesCmd> const & cmd);
    void drawGeometry(shared_ptr<DrawGeometryCmd> const & cmd);
    void unlockStorage(shared_ptr<UnlockStorageCmd> const & cmd);
    void discardStorage(shared_ptr<DiscardStorageCmd> const & cmd);
    void freeTexture(shared_ptr<FreeTextureCmd> const & cmd);
    void freeStorage(shared_ptr<FreeStorageCmd> const & cmd);
    void uploadResources(shared_ptr<UploadDataCmd> const & cmd);
    void addCheckPoint();

    void draw(DisplayListRenderer * r,
              math::Matrix<double, 3, 3> const & m);
  };
}