Generate a GL Error if framebuffer creation fails.
This commit is contained in:
@@ -26,6 +26,13 @@ namespace OpenRA.Renderer.SdlCommon
|
|||||||
GL_OUT_OF_MEMORY = Gl.GL_OUT_OF_MEMORY,
|
GL_OUT_OF_MEMORY = Gl.GL_OUT_OF_MEMORY,
|
||||||
GL_TABLE_TOO_LARGE = Gl.GL_TABLE_TOO_LARGE,
|
GL_TABLE_TOO_LARGE = Gl.GL_TABLE_TOO_LARGE,
|
||||||
GL_INVALID_OPERATION = Gl.GL_INVALID_OPERATION,
|
GL_INVALID_OPERATION = Gl.GL_INVALID_OPERATION,
|
||||||
|
|
||||||
|
// Framebuffer errors
|
||||||
|
GL_FRAMEBUFFER_COMPLETE_EXT = Gl.GL_FRAMEBUFFER_COMPLETE_EXT,
|
||||||
|
GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = Gl.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT,
|
||||||
|
GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = Gl.GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT,
|
||||||
|
GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = Gl.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT,
|
||||||
|
GL_FRAMEBUFFER_UNSUPPORTED_EXT = Gl.GL_FRAMEBUFFER_UNSUPPORTED_EXT,
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CheckGlError()
|
public static void CheckGlError()
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Imaging;
|
using System.Drawing.Imaging;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -28,7 +29,7 @@ namespace OpenRA.Renderer.SdlCommon
|
|||||||
{
|
{
|
||||||
this.size = size;
|
this.size = size;
|
||||||
if (!Exts.IsPowerOf2(size.Width) || !Exts.IsPowerOf2(size.Height))
|
if (!Exts.IsPowerOf2(size.Width) || !Exts.IsPowerOf2(size.Height))
|
||||||
throw new InvalidDataException("Non-power-of-two array {0}x{1}".F(size.Width, size.Height));
|
throw new InvalidDataException("Frame buffer size ({0}x{1}) must be a power of two".F(size.Width, size.Height));
|
||||||
|
|
||||||
Gl.glGenFramebuffersEXT(1, out framebuffer);
|
Gl.glGenFramebuffersEXT(1, out framebuffer);
|
||||||
ErrorHandler.CheckGlError();
|
ErrorHandler.CheckGlError();
|
||||||
@@ -57,7 +58,11 @@ namespace OpenRA.Renderer.SdlCommon
|
|||||||
// Test for completeness
|
// Test for completeness
|
||||||
var status = Gl.glCheckFramebufferStatusEXT(Gl.GL_FRAMEBUFFER_EXT);
|
var status = Gl.glCheckFramebufferStatusEXT(Gl.GL_FRAMEBUFFER_EXT);
|
||||||
if (status != Gl.GL_FRAMEBUFFER_COMPLETE_EXT)
|
if (status != Gl.GL_FRAMEBUFFER_COMPLETE_EXT)
|
||||||
throw new InvalidOperationException("Error creating framebuffer");
|
{
|
||||||
|
var error = "Error creating framebuffer: {0}\n{1}".F((ErrorHandler.GlError)status, new StackTrace());
|
||||||
|
ErrorHandler.WriteGraphicsLog(error);
|
||||||
|
throw new InvalidOperationException("OpenGL Error: See graphics.log for details.");
|
||||||
|
}
|
||||||
|
|
||||||
// Restore default buffer
|
// Restore default buffer
|
||||||
Gl.glBindFramebufferEXT(Gl.GL_FRAMEBUFFER_EXT, 0);
|
Gl.glBindFramebufferEXT(Gl.GL_FRAMEBUFFER_EXT, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user