GL error logging

This commit is contained in:
Caleb Anderson
2010-09-06 00:54:01 -05:00
committed by Chris Forbes
parent 0dddf12831
commit 4ca4d7b5dd

29
OpenRA.Gl/GraphicsDevice.cs Normal file → Executable file
View File

@@ -17,7 +17,7 @@ using Tao.Cg;
using Tao.OpenGl; using Tao.OpenGl;
using Tao.Sdl; using Tao.Sdl;
[assembly: Renderer( typeof( OpenRA.GlRenderer.GraphicsDevice ))] [assembly: Renderer(typeof(OpenRA.GlRenderer.GraphicsDevice))]
namespace OpenRA.GlRenderer namespace OpenRA.GlRenderer
{ {
@@ -31,11 +31,22 @@ namespace OpenRA.GlRenderer
public Size WindowSize { get { return windowSize; } } public Size WindowSize { get { return windowSize; } }
public enum GlError
{
GL_NO_ERROR = Gl.GL_NO_ERROR,
GL_INVALID_ENUM = Gl.GL_INVALID_ENUM,
GL_INVALID_VALUE = Gl.GL_INVALID_VALUE,
GL_STACK_OVERFLOW = Gl.GL_STACK_OVERFLOW,
GL_STACK_UNDERFLOW = Gl.GL_STACK_UNDERFLOW,
GL_OUT_OF_MEMORY = Gl.GL_OUT_OF_MEMORY,
GL_TABLE_TOO_LARGE = Gl.GL_TABLE_TOO_LARGE,
}
internal static void CheckGlError() internal static void CheckGlError()
{ {
var n = Gl.glGetError(); var n = Gl.glGetError();
if (n != Gl.GL_NO_ERROR) if (n != Gl.GL_NO_ERROR)
throw new InvalidOperationException("GL Error"); throw new InvalidOperationException("GL Error: " + ((GlError)n).ToString());
} }
public GraphicsDevice(int width, int height, WindowMode window, bool vsync) public GraphicsDevice(int width, int height, WindowMode window, bool vsync)
@@ -48,15 +59,15 @@ namespace OpenRA.GlRenderer
Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_ALPHA_SIZE, 0); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_ALPHA_SIZE, 0);
int windowFlags = 0; int windowFlags = 0;
switch( window ) switch (window)
{ {
case WindowMode.Fullscreen: case WindowMode.Fullscreen:
windowFlags |= Sdl.SDL_FULLSCREEN; windowFlags |= Sdl.SDL_FULLSCREEN;
break; break;
case WindowMode.PseudoFullscreen: case WindowMode.PseudoFullscreen:
// pseudo-fullscreen only reliably works on windows; fall back to fullscreen for everyone else // pseudo-fullscreen only reliably works on windows; fall back to fullscreen for everyone else
windowFlags |= ( Environment.OSVersion.Platform == PlatformID.Win32NT ) ? Sdl.SDL_NOFRAME : Sdl.SDL_FULLSCREEN; windowFlags |= (Environment.OSVersion.Platform == PlatformID.Win32NT) ? Sdl.SDL_NOFRAME : Sdl.SDL_FULLSCREEN;
Environment.SetEnvironmentVariable( "SDL_VIDEO_WINDOW_POS", "0,0" ); Environment.SetEnvironmentVariable("SDL_VIDEO_WINDOW_POS", "0,0");
break; break;
default: default:
break; break;
@@ -228,8 +239,8 @@ namespace OpenRA.GlRenderer
{ {
Event = KeyInputEvent.Down, Event = KeyInputEvent.Down,
Modifiers = mods, Modifiers = mods,
KeyChar = (char) e.key.keysym.unicode, KeyChar = (char)e.key.keysym.unicode,
KeyName = Sdl.SDL_GetKeyName( e.key.keysym.sym ), KeyName = Sdl.SDL_GetKeyName(e.key.keysym.sym),
VirtKey = e.key.keysym.sym VirtKey = e.key.keysym.sym
}; };
@@ -243,8 +254,8 @@ namespace OpenRA.GlRenderer
{ {
Event = KeyInputEvent.Up, Event = KeyInputEvent.Up,
Modifiers = mods, Modifiers = mods,
KeyChar = (char) e.key.keysym.unicode, KeyChar = (char)e.key.keysym.unicode,
KeyName = Sdl.SDL_GetKeyName( e.key.keysym.sym ), KeyName = Sdl.SDL_GetKeyName(e.key.keysym.sym),
VirtKey = e.key.keysym.sym VirtKey = e.key.keysym.sym
}; };