X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fdevice_backend.h;h=2583d5822173af93ce0bb92882c72f5e392aa124;hb=HEAD;hp=f3a8e48029b0b807e7484a6a5a9ab4b9c0130298;hpb=d16d28d2ccf7c6255204f02975834f713ff1df08;p=libs%2Fgl.git diff --git a/source/backends/opengl/device_backend.h b/source/backends/opengl/device_backend.h index f3a8e480..2583d582 100644 --- a/source/backends/opengl/device_backend.h +++ b/source/backends/opengl/device_backend.h @@ -1,22 +1,45 @@ #ifndef MSP_GL_DEVICE_BACKEND_H_ #define MSP_GL_DEVICE_BACKEND_H_ +#include #include #include namespace Msp { namespace GL { +class OpenGLBuffer; +class OpenGLPipelineState; +class OpenGLTexture; + +struct OpenGLDeviceState +{ + const OpenGLPipelineState *last_pipeline = 0; + std::vector bound_tex_targets; + std::vector bound_storage_textures; + std::vector bound_uniform_blocks; + unsigned restart_index = 0; + unsigned n_clip_distances = 0; + const OpenGLBuffer *scratch_buffer = 0; + const OpenGLTexture *scratch_texture = 0; +}; + class OpenGLDevice: public NonCopyable { protected: Graphics::GLContext context; + OpenGLDeviceState state; OpenGLDevice(Graphics::Window &, const Graphics::GLOptions &); + static Graphics::GLOptions create_default_options(); + void fill_info(); Graphics::GLContext &get_context() { return context; } + +public: + OpenGLDeviceState &get_state() { return state; } }; using DeviceBackend = OpenGLDevice;