[OpenGL.Net] [c#] [ WinForm ] 建立與開啟視窗 - 紀錄
幾個備註:
- 安裝 OpenGL.Net
- 安裝 OpenGL.Net.WinForms
- 建立一個 form 物件
- 取得 form 視窗的 handler
- 建立 OpenGL.Net.WinForms 的 GlControl 控件 (繪製在此處)
- luca-piccioni/OpenGL.Net
static class Program
{
static void Main()
{
var form = new Form {Width = 1024, Height = 768};
var hwnd = form.Handle;
var glControl = new GlControl {Width = 800, Height = 600, Anchor = AnchorStyles.Top | AnchorStyles.Left};
form.Controls.Add(glControl);
form.Paint += new PaintEventHandler(RenderControl_Render);
using (DeviceContext device = DeviceContext.Create(IntPtr.Zero, hwnd))
{
device.ChoosePixelFormat(new DevicePixelFormat(24));
IntPtr ctx = device.CreateContext(IntPtr.Zero);
if (device.MakeCurrent(ctx) == false)
throw new InvalidOperationException();
// ...
}
Application.Run(form);
}
private static void RenderControl_Render(object sender, PaintEventArgs e)
{
Control senderControl = (Control) sender;
// Gl.Viewport(-400, -300, senderControl.ClientSize.Width, senderControl.ClientSize.Height);
Gl.MatrixMode(MatrixMode.Projection);
Gl.LoadIdentity();
Gl.Ortho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
Gl.Clear(ClearBufferMask.ColorBufferBit);
Gl.Begin(PrimitiveType.Triangles);
Gl.Color3(1.0f, 0.0f, 0.0f);
Gl.Vertex2(0.0f, 0.0f);
Gl.Color3(0.0f, 1.0f, 0.0f);
Gl.Vertex2(0.5f, 1.0f);
Gl.Color3(0.0f, 0.0f, 1.0f);
Gl.Vertex2(1.0f, 0.0f);
Gl.End();
// Gl.Flush();
}
}
留言
張貼留言