#include <msp/gl/extensions/arb_explicit_uniform_location.h>
#include <msp/gl/extensions/arb_gpu_shader5.h>
#include <msp/gl/extensions/arb_separate_shader_objects.h>
+#include <msp/gl/extensions/arb_shader_image_load_store.h>
#include <msp/gl/extensions/arb_uniform_buffer_object.h>
#include <msp/gl/extensions/arb_vertex_shader.h>
#include <msp/gl/extensions/ext_framebuffer_multisample.h>
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<Device *>(this)->info;
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, reinterpret_cast<int *>(&lim.max_vertex_attributes));
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, reinterpret_cast<int *>(&lim.max_texture_bindings));
}
+ if(ARB_shader_image_load_store)
+ glGetIntegerv(GL_MAX_IMAGE_UNITS, reinterpret_cast<int *>(&lim.max_storage_texture_bindings));
if(EXT_framebuffer_object)
glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, reinterpret_cast<int *>(&lim.max_color_attachments));
if(EXT_framebuffer_multisample)
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