expose temp VBO tuning parameters in settings

This commit is contained in:
Chris Forbes
2011-05-05 18:49:50 +12:00
parent cd6f77ca7c
commit 90cea9f73d
3 changed files with 14 additions and 12 deletions

View File

@@ -258,7 +258,6 @@ namespace OpenRA
FileSystem.Mount("."); // Needed to access shaders FileSystem.Mount("."); // Needed to access shaders
Renderer.Initialize( Game.Settings.Graphics.Mode ); Renderer.Initialize( Game.Settings.Graphics.Mode );
Renderer.SheetSize = Settings.Game.SheetSize;
Renderer = new Renderer(); Renderer = new Renderer();
Console.WriteLine("Available mods:"); Console.WriteLine("Available mods:");

View File

@@ -61,6 +61,9 @@ namespace OpenRA.GameRules
public int2 FullscreenSize = new int2(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); public int2 FullscreenSize = new int2(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
public int2 WindowedSize = new int2(1024, 768); public int2 WindowedSize = new int2(1024, 768);
public readonly int2 MinResolution = new int2(800, 600); public readonly int2 MinResolution = new int2(800, 600);
public int BatchSize = 8192;
public int NumTempBuffers = 8;
} }
public class SoundSettings public class SoundSettings

View File

@@ -24,6 +24,8 @@ namespace OpenRA.Graphics
public class Renderer public class Renderer
{ {
internal static int SheetSize; internal static int SheetSize;
internal static int TempBufferSize;
internal static int TempBufferCount;
internal IShader SpriteShader { get; private set; } /* note: shared shader params */ internal IShader SpriteShader { get; private set; } /* note: shared shader params */
internal IShader LineShader { get; private set; } internal IShader LineShader { get; private set; }
@@ -37,15 +39,16 @@ namespace OpenRA.Graphics
public ITexture PaletteTexture; public ITexture PaletteTexture;
internal const int TempBufferSize = 8192; Queue<IVertexBuffer<Vertex>> tempBuffers = new Queue<IVertexBuffer<Vertex>>();
const int TempBufferCount = 8;
Queue<IVertexBuffer<Vertex>> tempBuffersV = new Queue<IVertexBuffer<Vertex>>();
public Dictionary<string, SpriteFont> Fonts; public Dictionary<string, SpriteFont> Fonts;
public Renderer() public Renderer()
{ {
TempBufferSize = Game.Settings.Graphics.BatchSize;
TempBufferCount = Game.Settings.Graphics.NumTempBuffers;
SheetSize = Game.Settings.Game.SheetSize; // TODO: move to Graphics.
SpriteShader = device.CreateShader("world-shp"); SpriteShader = device.CreateShader("world-shp");
LineShader = device.CreateShader("world-line"); LineShader = device.CreateShader("world-line");
RgbaSpriteShader = device.CreateShader("chrome-rgba"); RgbaSpriteShader = device.CreateShader("chrome-rgba");
@@ -57,7 +60,7 @@ namespace OpenRA.Graphics
LineRenderer = new LineRenderer(this); LineRenderer = new LineRenderer(this);
for( int i = 0 ; i < TempBufferCount ; i++ ) for( int i = 0 ; i < TempBufferCount ; i++ )
tempBuffersV.Enqueue( device.CreateVertexBuffer( TempBufferSize ) ); tempBuffers.Enqueue( device.CreateVertexBuffer( TempBufferSize ) );
} }
public void InitializeFonts(Manifest m) public void InitializeFonts(Manifest m)
@@ -149,15 +152,12 @@ namespace OpenRA.Graphics
internal IVertexBuffer<Vertex> GetTempVertexBuffer() internal IVertexBuffer<Vertex> GetTempVertexBuffer()
{ {
var ret = tempBuffersV.Dequeue(); var ret = tempBuffers.Dequeue();
tempBuffersV.Enqueue( ret ); tempBuffers.Enqueue( ret );
return ret; return ret;
} }
public interface IBatchRenderer public interface IBatchRenderer { void Flush(); }
{
void Flush();
}
static IBatchRenderer currentBatchRenderer; static IBatchRenderer currentBatchRenderer;
public static IBatchRenderer CurrentBatchRenderer public static IBatchRenderer CurrentBatchRenderer