/// <summary> /// Initializes the GL host. /// </summary> private void InitOpenGL() { RenderStateControl renderControl = new RenderStateControl(renderState); DiffusionBuffers buffers = new DiffusionBuffers(); DiffusionPathControl bufferControl = new DiffusionPathControl(buffers); //shaders DefaultShader pointShader = new DefaultShader("shaders/basic.vert", "shaders/basic.frag"); TexturedShader imageShader = new TexturedShader("shaders/tex.vert", "shaders/tex.frag"); TexturedShader diffuseShader = new TexturedShader("shaders/tex.vert", "shaders/diffuse.frag"); NormalShader lineShader = new NormalShader("shaders/normal.vert", "shaders/normal.geom", "shaders/normal.frag"); NormalShader endPointShader = new NormalShader("shaders/normal.vert", "shaders/endpoints.geom", "shaders/normal.frag"); renderer = new DiffusionRenderer(renderState, editorState, buffers, pointShader, imageShader, diffuseShader, lineShader, endPointShader); //Init GL GLControl control = new GLControl(new OpenTK.Graphics.GraphicsMode(32, 24, 8, 4)); this.glHost = new GLControlHost(control, editorState, editorControl, renderer, renderControl, bufferControl); this.glHost.Child = control; this.glHost.PointClicked += glHost_PointClicked; }
public static void Initialize(Settings settings) { Running = false; Time = new Stopwatch(); Window = new NativeWindow(settings.ResolutionWidth, settings.ResolutionHeight, "Watchtower", GameWindowFlags.Default, GraphicsMode.Default, DisplayDevice.GetDisplay((DisplayIndex)settings.Display)); switch (settings.WindowMode) { case WindowMode.Window: Window.WindowBorder = WindowBorder.Fixed; Window.WindowState = WindowState.Normal; break; case WindowMode.BorderlessWindow: Window.WindowBorder = WindowBorder.Hidden; Window.WindowState = WindowState.Normal; break; case WindowMode.Fullscreen: Window.WindowBorder = WindowBorder.Hidden; Window.WindowState = WindowState.Fullscreen; break; default: Window.WindowBorder = WindowBorder.Fixed; // TODO: log Window.WindowState = WindowState.Normal; break; } GraphicsContext = new GraphicsContext(GraphicsMode.Default, Window.WindowInfo); GraphicsContext.LoadAll(); GraphicsContext.SwapInterval = 0; GL.Enable(EnableCap.DepthTest); GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.ClearColor(15 / 255f, 15 / 255f, 15 / 255f, 1); fbshader = new FramebufferShader(); NormalBuffer = new Framebuffer(1280, 720); ColorBuffer = new Framebuffer(1280, 720); DepthBuffer = new Framebuffer(1280, 720); FinalBuffer = new Framebuffer(1280, 720); SSAOShader = new SSAOShader(); normalShader = new NormalShader(); ldshader = new LinearDepthShader(); FramebufferMesh = new Mesh(new VertexData { Vertices = new float[] { -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0 }, TextureCoordinates = new float[] { 0, 0, 1, 0, 1, 1, 0, 1 }, Indices = new uint[] { 0, 1, 2, 2, 3, 0 } }, new FramebufferShader()); Camera = new Camera(); Camera.Position = new Vector3(0, 128, 0); Camera.Yaw = 180; // TEMP TestShader = new BasicShader(); Console.WriteLine("TESTSHADER"); Console.WriteLine(TestShader.GetCompileStatus(ShaderType.VertexShader)); Console.WriteLine(TestShader.GetCompileStatus(ShaderType.FragmentShader)); Console.WriteLine(TestShader.GetCompileLog(ShaderType.VertexShader)); Console.WriteLine(TestShader.GetCompileLog(ShaderType.FragmentShader)); Console.WriteLine("NORMALSHADER"); Console.WriteLine(normalShader.GetCompileStatus(ShaderType.VertexShader)); Console.WriteLine(normalShader.GetCompileStatus(ShaderType.FragmentShader)); Console.WriteLine(normalShader.GetCompileLog(ShaderType.VertexShader)); Console.WriteLine(normalShader.GetCompileLog(ShaderType.FragmentShader)); Console.WriteLine("LINEARDEPTHSHADER"); Console.WriteLine(ldshader.GetCompileStatus(ShaderType.VertexShader)); Console.WriteLine(ldshader.GetCompileStatus(ShaderType.FragmentShader)); Console.WriteLine(ldshader.GetCompileLog(ShaderType.VertexShader)); Console.WriteLine(ldshader.GetCompileLog(ShaderType.FragmentShader)); Console.WriteLine("SSAOSHADER"); Console.WriteLine(SSAOShader.GetCompileStatus(ShaderType.VertexShader)); Console.WriteLine(SSAOShader.GetCompileStatus(ShaderType.FragmentShader)); Console.WriteLine(SSAOShader.GetCompileLog(ShaderType.VertexShader)); Console.WriteLine(SSAOShader.GetCompileLog(ShaderType.FragmentShader)); chunk = new Chunk(); for (int x = 0; x < 16; x += 2) { for (int y = 0; y < 128; y += 2) { for (int z = 0; z < 16; z += 2) { chunk.Blocks[x, y, z].Active = true; } } } for (int x = 0; x < 16; x++) { for (int y = 0; y < 128; y++) { for (int z = 0; z < 16; z++) { chunk.Blocks[x, y, z].Color = new Vector3((x / 15f), 40 / 255f, 94 / 255f); } } } chunk.Update(TestShader); GenerateChunksFromThatMapYouKnow(); // TestMesh = new Mesh(Block.BuildCube(true, true, false, true, false, true), TestShader); // TestMesh.Transform = Matrix4.CreateTranslation(22, 22, 22); Camera.Yaw = 90; // TEMP Vector3 posssssssss = new Vector3(141.4232f, 103.7891f, 35.3471f); Camera.Position = posssssssss; Window.Visible = true; Running = true; Time.Start(); double previous = Time.Elapsed.TotalMilliseconds; while (Running) { double current = Time.Elapsed.TotalMilliseconds; double elapsed = current - previous; // processInput? Update(elapsed); Render(); previous = current; } //int tickRate = 512; //double millisecondsPerUpdate = 1000.0 / tickRate; //double previous = Time.Elapsed.TotalMilliseconds; //double lag = 0; // Old loop //while (Running) //{ // double current = Time.Elapsed.TotalMilliseconds; // double elapsed = current - previous; // previous = current; // lag += elapsed; // // processinput // while (lag >= millisecondsPerUpdate) // temp // { // Update(lag / millisecondsPerUpdate); // lag -= millisecondsPerUpdate; // } // Render(); //} }