c# openGl画一个三角形

using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
using OpenTK.Mathematics;
using OpenTK.Windowing.Common;
using OpenTK.Windowing.Desktop;
using System;
using System.Drawing;

namespace OpenTKTriangleExample
{
    class GameWindowMy : GameWindow
    {
        int Width;
        int Height;
        public GameWindowMy(int width, int height, string title)
            : base(GameWindowSettings.Default, NativeWindowSettings.Default)
        {
            this.Width = width;
            this.Height = height;
            VSync = VSyncMode.On; // 启用垂直同步  
        }

        protected override void OnLoad()
        {
            GL.ClearColor(Color4.CornflowerBlue); // 设置背景颜色  

            // 设置视口  
            GL.Viewport(0, 0, Width, Height);

            // 初始化OpenGL  
            GL.Enable(EnableCap.DepthTest); // 启用深度测试  

            // 设置投影矩阵  
            GL.MatrixMode(MatrixMode.Projection);
            GL.LoadIdentity();
            //GLU.Perspective(45.0f, (float)Width / Height, 0.1f, 100.0f);

            // 设置模型视图矩阵  
            GL.MatrixMode(MatrixMode.Modelview);
            GL.LoadIdentity();

            // 清除屏幕  
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
        }

        protected override void OnRenderFrame(FrameEventArgs e)
        {
            // 清除屏幕和深度缓冲区  
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            // 绘制三角形  
            GL.Begin(PrimitiveType.Triangles); // 开始绘制三角形  

            // 设置三角形顶点的颜色(可选)  
            GL.Color3(1,0,0); // 红色  

            // 设置三角形顶点的坐标  
            GL.Vertex3(-0.5f, -0.5f, 0.0f); // 顶点1  
            GL.Vertex3(0.5f, -0.5f, 0.0f); // 顶点2  
            GL.Vertex3(0.0f, 0.5f, 0.0f);  // 顶点3  

            GL.End(); // 结束绘制三角形  

            // 交换缓冲区以显示渲染结果  
            SwapBuffers();

            // 处理标题栏的帧率显示  
            Title = $"{Width} x {Height} - {e.Time.ToString("F3")} ms/frame";

            // 调用基类的RenderFrame方法,如果需要的话  
            base.OnRenderFrame(e);
        }

        [STAThread]
        static void Main()
        {
            using (GameWindowMy game = new GameWindowMy(800, 600, "OpenTK Triangle Example"))
            {
                game.Run(); // 以60 FPS运行  
            }
        }
    }
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 C# OpenGL 教程,帮助你入门 OpenGL 编程。 1. 安装 OpenGL 首先你需要安装 OpenGL。你可以从官网下载最新版本的 OpenGL。 2. 创建一个 C# 窗体应用程序 在 Visual Studio 中创建一个新的 C# 窗体应用程序。 3. 添加 OpenGL 库 右键单击项目,选择“管理 NuGet 程序包”,搜索“OpenTK”并安装。 4. 引用 OpenGL 库 在代码中添加以下引用: ``` using OpenTK.Graphics.OpenGL; ``` 5. 初始化 OpenGL 在窗体的 Load 事件中添加以下代码: ``` private void Form1_Load(object sender, EventArgs e) { // 初始化 OpenGL GL.ClearColor(Color.Black); GL.Enable(EnableCap.DepthTest); GL.DepthFunc(DepthFunction.Less); // 设置视口 GL.Viewport(0, 0, glControl1.Width, glControl1.Height); } ``` 6. 绘制图形 在窗体的 Paint 事件中添加以下代码: ``` private void glControl1_Paint(object sender, PaintEventArgs e) { // 清除缓冲区 GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); // 绘制三角形 GL.Begin(PrimitiveType.Triangles); GL.Color3(Color.Red); GL.Vertex3(-1.0f, -1.0f, 0.0f); GL.Color3(Color.Green); GL.Vertex3(1.0f, -1.0f, 0.0f); GL.Color3(Color.Blue); GL.Vertex3(0.0f, 1.0f, 0.0f); GL.End(); // 刷新缓冲区 glControl1.SwapBuffers(); } ``` 7. 运行程序 现在你可以运行程序,并在窗体中看到一个彩色的三角形。 这只是一个入门教程,你可以通过学习 OpenGL 的其他方面来创建更复杂的图形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值