public OpenGLWindow() : base() { this.InitializeContexts();//初始化simpleopenglcontrol1 PlotSub.SelectFont(22, "Times New Roman"); this.MouseControl = new MouseControl(this); this.SizeChanged += simpleOpenGlControl1_SizeChanged; }
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 } }