private static void Do(Integrator integrator, SceneDescription sceneDesc) { Task.Factory.StartNew(() => { var window = new Window(integrator, sceneDesc); if (Window == null) { Window = window; } window.Run(); }); }
public Window(Integrator integrator, SceneDescription sceneDesc) : base(Program.Width, Program.Height, GraphicsMode.Default, $"PBRT - {integrator}", GameWindowFlags.Default, DisplayDevice.Default, 3, 0, GraphicsContextFlags.ForwardCompatible) { this.integrator = integrator; this.sceneDescription = sceneDesc; bitmap = new byte[Width * Height * 4]; // Setup the output texture texture = GL.GenTexture(); GL.BindTexture(TextureTarget.Texture2D, texture); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); id = WindowId++; var x = (Width * id) % DisplayDevice.Default.Width; var y = (Width * id) / DisplayDevice.Default.Height * 100; Location = new System.Drawing.Point(x, y); }