Merge pull request #4038 from Mailaender/fallbacks
Fallback to no sound and OpenGL renderer
This commit is contained in:
@@ -285,6 +285,7 @@ namespace OpenRA
|
||||
Log.AddChannel("sync", "syncreport.log");
|
||||
Log.AddChannel("server", "server.log");
|
||||
Log.AddChannel("sound", "sound.log");
|
||||
Log.AddChannel("graphics", "graphics.log");
|
||||
|
||||
if (Settings.Server.DiscoverNatDevices)
|
||||
UPnP.TryNatDiscovery();
|
||||
@@ -295,14 +296,38 @@ namespace OpenRA
|
||||
}
|
||||
|
||||
FileSystem.Mount("."); // Needed to access shaders
|
||||
Renderer.Initialize( Game.Settings.Graphics.Mode );
|
||||
var renderers = new [] { Settings.Graphics.Renderer, "Sdl2", "Gl", "Cg" };
|
||||
foreach (var r in renderers)
|
||||
{
|
||||
Settings.Graphics.Renderer = r;
|
||||
try
|
||||
{
|
||||
Renderer.Initialize(Settings.Graphics.Mode);
|
||||
break;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Write("graphics", "{0}", e);
|
||||
Console.WriteLine("Renderer initialization failed. Fallback in place. Check graphics.log for details.");
|
||||
}
|
||||
}
|
||||
Renderer = new Renderer();
|
||||
|
||||
try
|
||||
{
|
||||
Sound.Create(Settings.Sound.Engine);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Write("sound", "{0}", e);
|
||||
Console.WriteLine("Creating the sound engine failed. Fallback in place. Check sound.log for details.");
|
||||
Settings.Sound.Engine = "Null";
|
||||
Sound.Create(Settings.Sound.Engine);
|
||||
}
|
||||
|
||||
Console.WriteLine("Available mods:");
|
||||
foreach(var mod in Mod.AllMods)
|
||||
Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Title, mod.Value.Version);
|
||||
|
||||
Sound.Create(Settings.Sound.Engine);
|
||||
InitializeWithMods(Settings.Game.Mods);
|
||||
|
||||
if (Settings.Server.DiscoverNatDevices)
|
||||
|
||||
@@ -137,10 +137,10 @@ namespace OpenRA.Graphics
|
||||
FixOSX();
|
||||
|
||||
var resolution = GetResolution(windowMode);
|
||||
|
||||
string renderer = Game.Settings.Server.Dedicated ? "Null" : Game.Settings.Graphics.Renderer;
|
||||
|
||||
var renderer = Game.Settings.Server.Dedicated ? "Null" : Game.Settings.Graphics.Renderer;
|
||||
var rendererPath = Path.GetFullPath("OpenRA.Renderer.{0}.dll".F(renderer));
|
||||
|
||||
|
||||
device = CreateDevice(Assembly.LoadFile(rendererPath), resolution.Width, resolution.Height, windowMode);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA.Renderer.Cg
|
||||
{
|
||||
public IGraphicsDevice Create(Size size, WindowMode windowMode)
|
||||
{
|
||||
Console.WriteLine("Using Cg renderer");
|
||||
Console.WriteLine("Using SDL 1.2 with Cg renderer");
|
||||
return new GraphicsDevice(size, windowMode);
|
||||
}
|
||||
}
|
||||
@@ -43,9 +43,9 @@ namespace OpenRA.Renderer.Cg
|
||||
static Tao.Cg.Cg.CGerrorCallbackFuncDelegate errorCallback = () =>
|
||||
{
|
||||
var err = Tao.Cg.Cg.cgGetError();
|
||||
var msg = "CG Error: {0}: {1}".F(err, Tao.Cg.Cg.cgGetErrorString(err));
|
||||
var msg = "Cg Error: {0}: {1}".F(err, Tao.Cg.Cg.cgGetErrorString(err));
|
||||
ErrorHandler.WriteGraphicsLog(msg);
|
||||
throw new InvalidOperationException("CG Error. See graphics.log for details");
|
||||
throw new InvalidOperationException("Cg Error. See graphics.log for details");
|
||||
};
|
||||
|
||||
public GraphicsDevice(Size size, WindowMode window)
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace OpenRA.Renderer.Glsl
|
||||
{
|
||||
public IGraphicsDevice Create(Size size, WindowMode windowMode)
|
||||
{
|
||||
Console.WriteLine("Using Gl renderer");
|
||||
Console.WriteLine("Using SDL 1.2 with OpenGL renderer");
|
||||
return new GraphicsDevice(size, windowMode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRA.Renderer.Sdl2
|
||||
{
|
||||
public IGraphicsDevice Create(Size size, WindowMode windowMode)
|
||||
{
|
||||
Console.WriteLine("Using SDL2 renderer");
|
||||
Console.WriteLine("Using SDL 2 with OpenGL renderer");
|
||||
return new Sdl2GraphicsDevice(size, windowMode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,6 @@ namespace OpenRA.Renderer.SdlCommon
|
||||
|
||||
public static void WriteGraphicsLog(string message)
|
||||
{
|
||||
Log.AddChannel("graphics", "graphics.log");
|
||||
Log.Write("graphics", message);
|
||||
Log.Write("graphics", "");
|
||||
Log.Write("graphics", "OpenGL Information:");
|
||||
|
||||
Reference in New Issue
Block a user