X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fdevice_backend.h;h=491f1b3173a3aefc3a4da3d07b0123a7c69d64e6;hb=4cd245dafe6a7ee5c93edca5aee2d146f1155309;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..491f1b31 100644 --- a/source/backends/opengl/device_backend.h +++ b/source/backends/opengl/device_backend.h @@ -1,20 +1,44 @@ #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_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;