X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fdevice_backend.cpp;h=0fcbe07212ccb93783af6e473a7177783d9b98b2;hb=HEAD;hp=1c51b132ca48500a26f5b78841bbb2e99c855cd3;hpb=d16d28d2ccf7c6255204f02975834f713ff1df08;p=libs%2Fgl.git diff --git a/source/backends/opengl/device_backend.cpp b/source/backends/opengl/device_backend.cpp index 1c51b132..0fcbe072 100644 --- a/source/backends/opengl/device_backend.cpp +++ b/source/backends/opengl/device_backend.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -25,6 +26,14 @@ OpenGLDevice::OpenGLDevice(Graphics::Window &wnd, const Graphics::GLOptions &opt context(wnd, opts) { } +Graphics::GLOptions OpenGLDevice::create_default_options() +{ + Graphics::GLOptions opts; + opts.gl_version_major = Graphics::GLOptions::LATEST_VERSION; + opts.core_profile = true; + return opts; +} + void OpenGLDevice::fill_info() { DeviceInfo &info = static_cast(this)->info; @@ -54,6 +63,8 @@ void OpenGLDevice::fill_info() glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, reinterpret_cast(&lim.max_vertex_attributes)); glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, reinterpret_cast(&lim.max_texture_bindings)); } + if(ARB_shader_image_load_store) + glGetIntegerv(GL_MAX_IMAGE_UNITS, reinterpret_cast(&lim.max_storage_texture_bindings)); if(EXT_framebuffer_object) glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, reinterpret_cast(&lim.max_color_attachments)); if(EXT_framebuffer_multisample) @@ -79,6 +90,11 @@ void OpenGLDevice::fill_info() feat.ext_texture_array = EXT_texture_array; feat.uniform_binding_range = lim.max_uniform_bindings; feat.texture_binding_range = lim.max_texture_bindings; + feat.storage_texture_binding_range = lim.max_storage_texture_bindings; + + state.bound_tex_targets.resize(lim.max_texture_bindings); + state.bound_storage_textures.resize(lim.max_storage_texture_bindings); + state.bound_uniform_blocks.resize(lim.max_uniform_bindings); } } // namespace GL