当前位置: 首页 > news >正文

企业官网型网站模板北京王府井步行街

企业官网型网站模板,北京王府井步行街,深圳市建筑工程交易服务,新开的公司做网站多少钱接上篇,绘制着色矩形 C#使用OpenTK绘制一个着色矩形-CSDN博客 上一篇安装OpenTK.GLControl后,这里可以直接拖动控件GLControl 我们会发现GLControl继承于UserControl //// 摘要:// OpenGL-aware WinForms control. The WinForms designer will always call the default//…接上篇,绘制着色矩形 C#使用OpenTK绘制一个着色矩形-CSDN博客 上一篇安装OpenTK.GLControl后,这里可以直接拖动控件GLControl 我们会发现GLControl继承于UserControl //// 摘要:// OpenGL-aware WinForms control. The WinForms designer will always call the default// constructor. Inherit from this class and call one of its specialized constructors// to enable antialiasing or custom OpenTK.GLControl.GraphicsModes.public class GLControl : System.Windows.Forms.UserControl 以下我们绘制一个三棱锥,三棱锥需要四个顶点Vertex 新建窗体FormGLControl,拖入一个控件GLControl,绑定Load,Paint等事件 窗体FormGLControl设计器代码为: 文件FormGLControl.Designer.cs using OpenTK; namespace OpenTKDemo {partial class FormGLControl{/// summary/// Required designer variable./// /summaryprivate System.ComponentModel.IContainer components null;/// summary/// Clean up any resources being used./// /summary/// param namedisposingtrue if managed resources should be disposed; otherwise, false./paramprotected override void Dispose(bool disposing){if (disposing (components ! null)){components.Dispose();}base.Dispose(disposing);}#region Windows Form Designer generated code/// summary/// Required method for Designer support - do not modify/// the contents of this method with the code editor./// /summaryprivate void InitializeComponent(){this.glControl1 new OpenTK.GLControl();this.SuspendLayout();// // glControl1// this.glControl1.BackColor System.Drawing.Color.Black;this.glControl1.Location new System.Drawing.Point(12, 12);this.glControl1.Name glControl1;this.glControl1.Size new System.Drawing.Size(800, 600);this.glControl1.TabIndex 0;this.glControl1.VSync false;this.glControl1.Load new System.EventHandler(this.glControl1_Load);this.glControl1.Paint new System.Windows.Forms.PaintEventHandler(this.glControl1_Paint);this.glControl1.MouseDown new System.Windows.Forms.MouseEventHandler(this.glControl1_MouseDown);this.glControl1.MouseMove new System.Windows.Forms.MouseEventHandler(this.glControl1_MouseMove);this.glControl1.MouseUp new System.Windows.Forms.MouseEventHandler(this.glControl1_MouseUp);this.glControl1.Resize new System.EventHandler(this.glControl1_Resize);// // FormGLControl// this.AutoScaleDimensions new System.Drawing.SizeF(6F, 12F);this.AutoScaleMode System.Windows.Forms.AutoScaleMode.Font;this.ClientSize new System.Drawing.Size(832, 619);this.Controls.Add(this.glControl1);this.Name FormGLControl;this.Text FormGLControl;this.ResumeLayout(false);}#endregionprivate GLControl glControl1;} } 窗体FormGLControl相关代码如下: 文件FormGLControl.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using OpenTK; using OpenTK.Graphics.OpenGL;namespace OpenTKDemo {public partial class FormGLControl : Form{private int vao, vbo, shaderProgram;private Matrix4 model, view, projection;private float rotationX 0.0f, rotationY 0.0f; // 旋转角度private bool isDragging false;private Point lastMousePosition;public FormGLControl(){InitializeComponent();}private void glControl1_Load(object sender, EventArgs e){// 设置清屏颜色GL.ClearColor(1.0f, 1.0f, 1.0f, 1.0f);// 初始化 VAO 和 VBOvao GL.GenVertexArray();vbo GL.GenBuffer();GL.BindVertexArray(vao);float[] vertices {// 顶点位置 // 颜色0.0f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, // 顶点1(x,y,z,red,green,blue)-0.5f, -0.5f, 0.5f, 0.0f, 1.0f, 0.0f, // 顶点20.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, // 顶点30.0f, -0.5f, -0.5f, 1.0f, 1.0f, 0.0f // 顶点4};int[] indices {0, 1, 2, // 正面0, 2, 3, // 右面0, 3, 1, // 左面1, 3, 2 // 底面};int ebo GL.GenBuffer();GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.StaticDraw);GL.BindBuffer(BufferTarget.ElementArrayBuffer, ebo);GL.BufferData(BufferTarget.ElementArrayBuffer, indices.Length * sizeof(int), indices, BufferUsageHint.StaticDraw);GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, 6 * sizeof(float), 0);GL.EnableVertexAttribArray(0);GL.VertexAttribPointer(1, 3, VertexAttribPointerType.Float, false, 6 * sizeof(float), 3 * sizeof(float));GL.EnableVertexAttribArray(1);// 创建并编译着色器string vertexShaderSource #version 330 corelayout (location 0) in vec3 aPosition;layout (location 1) in vec3 aColor;out vec3 vertexColor;uniform mat4 model;uniform mat4 view;uniform mat4 projection;void main(){gl_Position projection * view * model * vec4(aPosition, 1.0);vertexColor aColor;};string fragmentShaderSource #version 330 corein vec3 vertexColor;out vec4 FragColor;void main(){FragColor vec4(vertexColor, 1.0);};int vertexShader CompileShader(ShaderType.VertexShader, vertexShaderSource);int fragmentShader CompileShader(ShaderType.FragmentShader, fragmentShaderSource);shaderProgram GL.CreateProgram();GL.AttachShader(shaderProgram, vertexShader);GL.AttachShader(shaderProgram, fragmentShader);GL.LinkProgram(shaderProgram);// 删除着色器GL.DeleteShader(vertexShader);GL.DeleteShader(fragmentShader);// 初始化矩阵view Matrix4.LookAt(new Vector3(0.0f, 0.0f, 2.0f), Vector3.Zero, Vector3.UnitY);projection Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(45.0f), glControl1.Width / (float)glControl1.Height, 0.1f, 100.0f);GL.BindVertexArray(0);}private void glControl1_Paint(object sender, PaintEventArgs e){// 清屏GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);// 绘制三角锥GL.UseProgram(shaderProgram);model Matrix4.CreateRotationX(MathHelper.DegreesToRadians(rotationX)) *Matrix4.CreateRotationY(MathHelper.DegreesToRadians(rotationY));GL.UniformMatrix4(GL.GetUniformLocation(shaderProgram, model), false, ref model);GL.UniformMatrix4(GL.GetUniformLocation(shaderProgram, view), false, ref view);GL.UniformMatrix4(GL.GetUniformLocation(shaderProgram, projection), false, ref projection);GL.BindVertexArray(vao);GL.DrawElements(PrimitiveType.Triangles, 12, DrawElementsType.UnsignedInt, 0);glControl1.SwapBuffers();}private void glControl1_Resize(object sender, EventArgs e){GL.Viewport(0, 0, glControl1.Width, glControl1.Height);projection Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(45.0f), glControl1.Width / (float)glControl1.Height, 0.1f, 100.0f);}private void glControl1_MouseDown(object sender, MouseEventArgs e){if (e.Button MouseButtons.Left){isDragging true;lastMousePosition e.Location;}}private void glControl1_MouseUp(object sender, MouseEventArgs e){if (e.Button MouseButtons.Left){isDragging false;}}private void glControl1_MouseMove(object sender, MouseEventArgs e){if (isDragging){int deltaX e.X - lastMousePosition.X;int deltaY e.Y - lastMousePosition.Y;rotationX deltaY * 0.5f;rotationY deltaX * 0.5f;lastMousePosition e.Location;glControl1.Invalidate();}}private int CompileShader(ShaderType type, string source){int shader GL.CreateShader(type);GL.ShaderSource(shader, source);GL.CompileShader(shader);GL.GetShader(shader, ShaderParameter.CompileStatus, out int status);if (status 0){GL.GetShaderInfoLog(shader, out string infoLog);throw new Exception($Error compiling shader ({type}): {infoLog});}return shader;}} }运行如图: 可以拖动旋转:
http://www.hkea.cn/news/14575301/

相关文章:

  • 上海手机网站开发价格我要注册电子邮箱
  • o2o网站建设价格网站登录不上怎么回事
  • 网站建设服务器怎么设置360提交网站
  • 律师网站建设培训班门店推广是什么意思
  • 华为云定制建站服务怎么样淘宝客网站 建设要钱不
  • 东莞茶山网站建设网站有哪些风格
  • 常德自助建站seo西安学校网站建设
  • 注册完域名怎么做网站乐陵网站制作
  • 注册了域名后怎么设计网站只做自己网站
  • 企业建网站的好处哪里培训做网站
  • 电子商务网站开发是指京东网上商城手机
  • 佛山龙江做网站的全部列表支持安卓浏览器软件下载
  • 凡科网建站系统源码网站备份与恢复
  • 开发网站服务器黄岩区信誉好高端网站设计
  • 交易网站seo怎么做公关策划是做什么的
  • 新的网站建设一般多少钱长沙城乡住房建设厅网站
  • 长春高端网站制作wordpress伪静态不跳转404
  • 低价网站建设制作设计公司1月初达到感染高峰
  • 吉安网站推广投资做个app要多少钱
  • 瑞安做网站的公司微信小程序怎么制作自己的程序
  • 专业的网站设计公司有没有女的做任务的网站
  • 四川省城乡和住房建设厅官方网站wordpress微博图床优点缺点
  • 网站标题 关键字零基础编程入门自学
  • 户外网站设计建站之星模板的使用
  • 企业网站营销实现方式淄博 网站seo优化
  • 中华室内设计网招聘网站内部代码优化
  • 飞凡网站建设为什么谷歌浏览器打不开网页
  • 设计网站多少费用多少平台期什么意思
  • 网站建设明确细节网页设计与网站建设考试名词解释
  • 网站数据库多大合适wordpress开发教程 pdf