diff --git a/src/main/scala/ocelot/desktop/graphics/ScreenViewport.scala b/src/main/scala/ocelot/desktop/graphics/ScreenViewport.scala index 8f71679..fbc8607 100644 --- a/src/main/scala/ocelot/desktop/graphics/ScreenViewport.scala +++ b/src/main/scala/ocelot/desktop/graphics/ScreenViewport.scala @@ -4,12 +4,12 @@ import ocelot.desktop.color.{Color, RGBAColorNorm} import ocelot.desktop.geometry.Transform2D import ocelot.desktop.graphics.mesh.{Mesh2D, MeshInstance2D, MeshVertex2D} import ocelot.desktop.graphics.render.InstanceRenderer -import ocelot.desktop.util.{Font, Resource, Spritesheet} +import ocelot.desktop.util.{Font, Logging, Resource, Spritesheet} import org.lwjgl.opengl.{ARBFramebufferObject, GL11, GL21, GL30} import java.nio.ByteBuffer -class ScreenViewport(graphics: Graphics, private var _width: Int, private var _height: Int) extends Resource { +class ScreenViewport(graphics: Graphics, private var _width: Int, private var _height: Int) extends Resource with Logging { private[graphics] var texture = new Texture(_width, _height, GL21.GL_SRGB8, GL11.GL_UNSIGNED_BYTE, 0) private val framebuffer = ARBFramebufferObject.glGenFramebuffers() GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, framebuffer) @@ -32,7 +32,11 @@ class ScreenViewport(graphics: Graphics, private var _width: Int, private var _h override def freeResource(): Unit = { super.freeResource() - GL30.glDeleteFramebuffers(framebuffer) + try { + GL30.glDeleteFramebuffers(framebuffer) + } catch { + case e: Exception => logger.error("Error disposing screen viewport frame buffer!", e) + } texture.freeResource() renderer.freeResource()