void gui_surface::resize(const float2& buffer_size_) { uint2 buffer_size_abs_ = ((flags & SURFACE_FLAGS::ABSOLUTE_SIZE) == SURFACE_FLAGS::ABSOLUTE_SIZE ? buffer_size_.rounded() : buffer_size_ * float2(oclraster::get_width(), oclraster::get_height())); if(buffer.get_attachment_count() != 0 && buffer_size_abs.x == buffer_size_abs_.x && buffer_size_abs.y == buffer_size_abs_.y) { // same size, nothing to do here return; } buffer_size = buffer_size_; buffer_size_abs = buffer_size_abs_; delete_buffer(); const bool has_depth = ((flags & SURFACE_FLAGS::NO_DEPTH) != SURFACE_FLAGS::NO_DEPTH); buffer = framebuffer::create_with_images(buffer_size_abs.x, buffer_size_abs.y, { { IMAGE_TYPE::UINT_8, IMAGE_CHANNEL::RGBA } }, { has_depth ? IMAGE_TYPE::FLOAT_32 : IMAGE_TYPE::NONE, has_depth ? IMAGE_CHANNEL::R : IMAGE_CHANNEL::NONE }); // set blit vbo rectangle data set_offset(offset); // redraw(); }