private static bool DrawToWindow(IntPtr hWnd, FramebufferData framebufferData, int destX = 0, int destY = 0, int srcX = 0, int srcY = 0, int width = -1, int height = -1) { if (framebufferData.Data.IsDisposed) { throw new ObjectDisposedException("Framebuffer"); } if (hWnd == IntPtr.Zero) { return(false); } var hDC = UnmanagedMethods.GetDC(hWnd); if (hDC == IntPtr.Zero) { return(false); } try { DrawToDevice(framebufferData, hDC, destX, destY, srcX, srcY, width, height); } finally { UnmanagedMethods.ReleaseDC(hWnd, hDC); } return(true); }
public override void OnAttach() { app = Application.GetApplication(); var window = app.GetWindow(); Renderer.SetClearColor(Color.White.ToVec4()); orthoCamera = new OrthographicCamera(-16f, 16f, -9f, 9f); //persCamera = new PerspectiveCamera(45, 16f/9f, 0.01f, 1000); //selectedCamera = persCamera; //persCamera.Position = new OpenTK.Mathematics.Vector3(0, 0, -1); float[] verticies = { -0.5f, -0.5f, 0.0f, /* Colors 0.0f, 0.0f, 0.0f, */ /* Tex Coords */ 0.0f, 0.0f, 0.5f, 0.5f, 0.0f, /* Colors 0.0f, 0.0f, 0.0f, */ /* Tex Coords */ 1.0f, 1.0f, -0.5f, 0.5f, 0.0f, /* Colors 0.0f, 0.0f, 0.0f, */ /* Tex Coords */ 0.0f, 1.0f, 0.5f, -0.5f, 0.0f, /* Colors 0.0f, 0.0f, 0.0f, */ /* Tex Coords */ 1.0f, 0.0f, }; uint[] indices = { 0, 1, 2, 0, 3, 1 }; shader = new Shader("Assets/Shaders/vertex.glsl", "Assets/Shaders/fragment.glsl", true); vertexBuffer = new VertexBuffer(verticies, verticies.Length * sizeof(float)); indexBuffer = new IndexBuffer(indices, indices.Length * sizeof(uint)); BufferLayout layout = new BufferLayout( new BufferElement("positions", ShaderDataType.Float3), new BufferElement("texCoords", ShaderDataType.Float2) //new BufferElement("colors", ShaderDataType.Float3) ); vertexBuffer.SetLayout(layout); vertexArray = new VertexArray(); vertexArray.AddVertexBuffer(vertexBuffer); vertexArray.SetIndexBuffer(indexBuffer); checkerboard = new Texture2D("Assets/Textures/Checkerboard.png"); cherno = new Texture2D("Assets/Textures/ChernoLogo.png"); shader.SetInt("uTexture", 0); vendorString = GL.GetString(StringName.Vendor); rendererString = GL.GetString(StringName.Renderer); versionString = GL.GetString(StringName.Version); FramebufferData fbData = new FramebufferData(1280, 720); framebuffer = new Framebuffer(fbData); viewportSize = new Vector2(framebuffer.FramebufferData.Width, framebuffer.FramebufferData.Height); }
private static void DrawToDevice(FramebufferData framebufferData, IntPtr hDC, int destX = 0, int destY = 0, int srcX = 0, int srcY = 0, int width = -1, int height = -1) { if (width == -1) { width = framebufferData.Size.Width; } if (height == -1) { height = framebufferData.Size.Height; } var bmpInfo = framebufferData.Header; UnmanagedMethods.SetDIBitsToDevice(hDC, destX, destY, (uint)width, (uint)height, srcX, srcY, 0, (uint)framebufferData.Size.Height, framebufferData.Data.Address, ref bmpInfo, 0); }