Пример #1
0
 public OpenGLWindow()
     : base()
 {
     this.InitializeContexts();//初始化simpleopenglcontrol1
     PlotSub.SelectFont(22, "Times New Roman");
     this.MouseControl = new MouseControl(this);
     this.SizeChanged += simpleOpenGlControl1_SizeChanged;
 }
Пример #2
0
 public void PlotInOpenGL()
 {
     if (this.Visible == true)
     {
         PlotSub.glColor4d(this.Color);
         #region   面
         GL.glBegin(GL.GL_TRIANGLE_STRIP); //三角面起點
         GL.glNormal3d(0, 0, -1);          //頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[0].Y,
                       Boundary[0].Z);
         GL.glNormal3d(0, 0, -1);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[0].Y,
                       Boundary[0].Z);
         GL.glNormal3d(0, 0, -1);//頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[1].Y,
                       Boundary[0].Z);
         GL.glNormal3d(0, 0, -1);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[1].Y,
                       Boundary[0].Z);
         GL.glEnd();
         GL.glBegin(GL.GL_TRIANGLE_STRIP); //三角面起點
         GL.glNormal3d(0, 0, 1);           //頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[0].Y,
                       Boundary[1].Z);
         GL.glNormal3d(0, 0, 1);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[0].Y,
                       Boundary[1].Z);
         GL.glNormal3d(0, 0, 1);//頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[1].Y,
                       Boundary[1].Z);
         GL.glNormal3d(0, 0, 1);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[1].Y,
                       Boundary[1].Z);
         GL.glEnd();
         #endregion
         #region 左右面
         GL.glBegin(GL.GL_TRIANGLE_STRIP); //三角面起點
         GL.glNormal3d(-1, 0, 0);          //頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[0].Y,
                       Boundary[0].Z);
         GL.glNormal3d(-1, 0, 0);//頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[0].Y,
                       Boundary[1].Z);
         GL.glNormal3d(-1, 0, 0);//頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[1].Y,
                       Boundary[0].Z);
         GL.glNormal3d(-1, 0, 0);//頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[1].Y,
                       Boundary[1].Z);
         GL.glEnd();
         GL.glBegin(GL.GL_TRIANGLE_STRIP); //三角面起點
         GL.glNormal3d(1, 0, 0);           //頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[0].Y,
                       Boundary[0].Z);
         GL.glNormal3d(1, 0, 0);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[0].Y,
                       Boundary[1].Z);
         GL.glNormal3d(1, 0, 0);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[1].Y,
                       Boundary[0].Z);
         GL.glNormal3d(1, 0, 0);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[1].Y,
                       Boundary[1].Z);
         GL.glEnd();
         #endregion
         #region 前後面
         GL.glBegin(GL.GL_TRIANGLE_STRIP); //三角面起點
         GL.glNormal3d(0, -1, 0);          //頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[0].Y,
                       Boundary[0].Z);
         GL.glNormal3d(0, -1, 0);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[0].Y,
                       Boundary[0].Z);
         GL.glNormal3d(0, -1, 0);//頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[0].Y,
                       Boundary[1].Z);
         GL.glNormal3d(0, -1, 0);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[0].Y,
                       Boundary[1].Z);
         GL.glEnd();
         GL.glBegin(GL.GL_TRIANGLE_STRIP); //三角面起點
         GL.glNormal3d(0, 1, 0);           //頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[1].Y,
                       Boundary[0].Z);
         GL.glNormal3d(0, 1, 0);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[1].Y,
                       Boundary[0].Z);
         GL.glNormal3d(0, 1, 0);//頂點法向量
         GL.glVertex3d(Boundary[0].X,
                       Boundary[1].Y,
                       Boundary[1].Z);
         GL.glNormal3d(0, 1, 0);//頂點法向量
         GL.glVertex3d(Boundary[1].X,
                       Boundary[1].Y,
                       Boundary[1].Z);
         GL.glEnd();
         #endregion
     }
 }