X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fdevice_backend.h;h=2583d5822173af93ce0bb92882c72f5e392aa124;hb=HEAD;hp=e64352d3437b082b4f014efa76f894cfaef80f84;hpb=f0414f06fc2463e9765c9492dce60e0468dceb3c;p=libs%2Fgl.git diff --git a/source/backends/opengl/device_backend.h b/source/backends/opengl/device_backend.h index e64352d3..2583d582 100644 --- a/source/backends/opengl/device_backend.h +++ b/source/backends/opengl/device_backend.h @@ -1,20 +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;