allow feedback on window size; ask glfw how big a window we *actually* got.
This commit is contained in:
@@ -28,6 +28,8 @@ namespace OpenRa.FileFormats.Graphics
|
|||||||
|
|
||||||
IShader CreateShader( Stream stream );
|
IShader CreateShader( Stream stream );
|
||||||
|
|
||||||
|
Size WindowSize { get; }
|
||||||
|
|
||||||
void Begin();
|
void Begin();
|
||||||
void End();
|
void End();
|
||||||
void Clear( Color color );
|
void Clear( Color color );
|
||||||
|
|||||||
@@ -370,6 +370,7 @@ namespace OpenRa
|
|||||||
bool windowed = !Game.Settings.Fullscreen;
|
bool windowed = !Game.Settings.Fullscreen;
|
||||||
var resolution = GetResolution(settings);
|
var resolution = GetResolution(settings);
|
||||||
renderer = new Renderer(resolution, windowed);
|
renderer = new Renderer(resolution, windowed);
|
||||||
|
resolution = renderer.Resolution;
|
||||||
|
|
||||||
var controller = new Controller(() => (Modifiers)(int)0/*ModifierKeys*/); /* a bit of insane input routing */
|
var controller = new Controller(() => (Modifiers)(int)0/*ModifierKeys*/); /* a bit of insane input routing */
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ namespace OpenRa.Graphics
|
|||||||
SpriteRenderer rgbaRenderer;
|
SpriteRenderer rgbaRenderer;
|
||||||
Sprite textSprite;
|
Sprite textSprite;
|
||||||
|
|
||||||
|
public Size Resolution { get { return device.WindowSize; } }
|
||||||
|
|
||||||
public Renderer(Size resolution, bool windowed)
|
public Renderer(Size resolution, bool windowed)
|
||||||
{
|
{
|
||||||
device = CreateDevice( Assembly.LoadFile( Path.GetFullPath( "OpenRa.Gl.dll" ) ), resolution.Width, resolution.Height, windowed, false );
|
device = CreateDevice( Assembly.LoadFile( Path.GetFullPath( "OpenRa.Gl.dll" ) ), resolution.Width, resolution.Height, windowed, false );
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ namespace OpenRa.GlRenderer
|
|||||||
readonly Glfw.GLFWwindowclosefun windowCloseCallback;
|
readonly Glfw.GLFWwindowclosefun windowCloseCallback;
|
||||||
int mouseX, mouseY;
|
int mouseX, mouseY;
|
||||||
|
|
||||||
|
public Size WindowSize { get { return windowSize; } }
|
||||||
|
|
||||||
internal static void CheckGlError()
|
internal static void CheckGlError()
|
||||||
{
|
{
|
||||||
var n = Gl.glGetError();
|
var n = Gl.glGetError();
|
||||||
@@ -55,7 +57,7 @@ namespace OpenRa.GlRenderer
|
|||||||
public GraphicsDevice( int width, int height, bool fullscreen, bool vsync )
|
public GraphicsDevice( int width, int height, bool fullscreen, bool vsync )
|
||||||
{
|
{
|
||||||
Glfw.glfwInit();
|
Glfw.glfwInit();
|
||||||
Glfw.glfwOpenWindow(width, height, 0, 0, 0, 0, 0, 0, fullscreen ? Glfw.GLFW_FULLSCREEN : Glfw.GLFW_WINDOW);
|
Glfw.glfwOpenWindow(width, height, 0, 0, 0, 0, 0, 0, /*fullscreen ? Glfw.GLFW_FULLSCREEN : */Glfw.GLFW_WINDOW);
|
||||||
bool initDone = false;
|
bool initDone = false;
|
||||||
|
|
||||||
var lastButtonBits = (MouseButtons)0;
|
var lastButtonBits = (MouseButtons)0;
|
||||||
@@ -69,7 +71,11 @@ namespace OpenRa.GlRenderer
|
|||||||
Game.DispatchMouseInput( action == Glfw.GLFW_PRESS ? MouseInputEvent.Down : MouseInputEvent.Up,
|
Game.DispatchMouseInput( action == Glfw.GLFW_PRESS ? MouseInputEvent.Down : MouseInputEvent.Up,
|
||||||
new MouseEventArgs( b, action == Glfw.GLFW_PRESS ? 1 : 0, mouseX, mouseY, 0 ), 0 );
|
new MouseEventArgs( b, action == Glfw.GLFW_PRESS ? 1 : 0, mouseX, mouseY, 0 ), 0 );
|
||||||
|
|
||||||
lastButtonBits = action == Glfw.GLFW_PRESS ? b : 0;
|
if (action == Glfw.GLFW_PRESS) lastButtonBits |= b;
|
||||||
|
else lastButtonBits &= ~b;
|
||||||
|
|
||||||
|
if (action != Glfw.GLFW_PRESS && action != Glfw.GLFW_RELEASE)
|
||||||
|
throw new InvalidOperationException();
|
||||||
} );
|
} );
|
||||||
Glfw.glfwSetMousePosCallback(mousePositionCallback = (x, y) =>
|
Glfw.glfwSetMousePosCallback(mousePositionCallback = (x, y) =>
|
||||||
{
|
{
|
||||||
@@ -86,6 +92,7 @@ namespace OpenRa.GlRenderer
|
|||||||
} );
|
} );
|
||||||
CheckGlError();
|
CheckGlError();
|
||||||
|
|
||||||
|
Glfw.glfwGetWindowSize(out width, out height);
|
||||||
windowSize = new Size( width, height );
|
windowSize = new Size( width, height );
|
||||||
|
|
||||||
cgContext = Cg.cgCreateContext();
|
cgContext = Cg.cgCreateContext();
|
||||||
|
|||||||
Reference in New Issue
Block a user