GL error logging
This commit is contained in:
committed by
Chris Forbes
parent
0dddf12831
commit
4ca4d7b5dd
29
OpenRA.Gl/GraphicsDevice.cs
Normal file → Executable file
29
OpenRA.Gl/GraphicsDevice.cs
Normal file → Executable file
@@ -17,7 +17,7 @@ using Tao.Cg;
|
||||
using Tao.OpenGl;
|
||||
using Tao.Sdl;
|
||||
|
||||
[assembly: Renderer( typeof( OpenRA.GlRenderer.GraphicsDevice ))]
|
||||
[assembly: Renderer(typeof(OpenRA.GlRenderer.GraphicsDevice))]
|
||||
|
||||
namespace OpenRA.GlRenderer
|
||||
{
|
||||
@@ -31,11 +31,22 @@ namespace OpenRA.GlRenderer
|
||||
|
||||
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()
|
||||
{
|
||||
var n = Gl.glGetError();
|
||||
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)
|
||||
@@ -48,15 +59,15 @@ namespace OpenRA.GlRenderer
|
||||
Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_ALPHA_SIZE, 0);
|
||||
|
||||
int windowFlags = 0;
|
||||
switch( window )
|
||||
switch (window)
|
||||
{
|
||||
case WindowMode.Fullscreen:
|
||||
windowFlags |= Sdl.SDL_FULLSCREEN;
|
||||
break;
|
||||
case WindowMode.PseudoFullscreen:
|
||||
// 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;
|
||||
Environment.SetEnvironmentVariable( "SDL_VIDEO_WINDOW_POS", "0,0" );
|
||||
windowFlags |= (Environment.OSVersion.Platform == PlatformID.Win32NT) ? Sdl.SDL_NOFRAME : Sdl.SDL_FULLSCREEN;
|
||||
Environment.SetEnvironmentVariable("SDL_VIDEO_WINDOW_POS", "0,0");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -228,8 +239,8 @@ namespace OpenRA.GlRenderer
|
||||
{
|
||||
Event = KeyInputEvent.Down,
|
||||
Modifiers = mods,
|
||||
KeyChar = (char) e.key.keysym.unicode,
|
||||
KeyName = Sdl.SDL_GetKeyName( e.key.keysym.sym ),
|
||||
KeyChar = (char)e.key.keysym.unicode,
|
||||
KeyName = Sdl.SDL_GetKeyName(e.key.keysym.sym),
|
||||
VirtKey = e.key.keysym.sym
|
||||
};
|
||||
|
||||
@@ -243,8 +254,8 @@ namespace OpenRA.GlRenderer
|
||||
{
|
||||
Event = KeyInputEvent.Up,
|
||||
Modifiers = mods,
|
||||
KeyChar = (char) e.key.keysym.unicode,
|
||||
KeyName = Sdl.SDL_GetKeyName( e.key.keysym.sym ),
|
||||
KeyChar = (char)e.key.keysym.unicode,
|
||||
KeyName = Sdl.SDL_GetKeyName(e.key.keysym.sym),
|
||||
VirtKey = e.key.keysym.sym
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user