blob: 7b9e80a10ba9c12f391163bbc7a0e9579adc8dbf (
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
60
61
|
#pragma once
#include "uniforms_holder.hpp"
#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,
UniformsHolder * holder = NULL);
};
}
|