盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

制作一个基于MFC对话框的OpenGL类

时间:2024/12/29作者:未知来源:盾怪网教程人气:

[摘要]GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer  glLoadIdentity();  // EXAMPLE OPENGL CODE S...
GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
  glLoadIdentity();

  // EXAMPLE OPENGL CODE START ////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////
  static GLfloat xrot; // X Rotation
  static GLfloat yrot; // Y Rotation
  static GLfloat zrot; // Z Rotation

  glPushMatrix(); // Push Matrix Onto Stack (Copy The Current Matrix)
  glLoadIdentity(); // Reset The Current Modelview Matrix
  glTranslatef(0.0f,0.0f,-6.0f); // Move Left 1.5 Units And Into The Screen 6.0

  glRotatef(xrot,1.0f,0.0f,0.0f);
  glRotatef(yrot,0.0f,1.0f,0.0f);
  glRotatef(zrot,0.0f,0.0f,1.0f);

  glBegin(GL_QUADS);
  // Front Face
  glColor3f(1.0f,0.0f,0.0f);glVertex3f(-1.0f, -1.0f, 1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, -1.0f, 1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, 1.0f, 1.0f);
  glColor3f(0.0f,0.0f,1.0f);glVertex3f(-1.0f, 1.0f, 1.0f);
  // Back Face
  glColor3f(1.0f,0.0f,0.0f);glVertex3f(-1.0f, -1.0f, -1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.0f, 1.0f, -1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, 1.0f, -1.0f);
  glColor3f(0.0f,0.0f,1.0f);glVertex3f( 1.0f, -1.0f, -1.0f);
  // Top Face
  glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.0f, 1.0f, -1.0f);
  glColor3f(0.0f,0.0f,1.0f);glVertex3f(-1.0f, 1.0f, 1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, 1.0f, 1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, 1.0f, -1.0f);
  // Bottom Face
  glColor3f(1.0f,0.0f,0.0f);glVertex3f(-1.0f, -1.0f, -1.0f);
  glColor3f(0.0f,0.0f,1.0f);glVertex3f( 1.0f, -1.0f, -1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, -1.0f, 1.0f);
  glColor3f(1.0f,0.0f,0.0f);glVertex3f(-1.0f, -1.0f, 1.0f);
  // Right face
  glColor3f(0.0f,0.0f,1.0f);glVertex3f( 1.0f, -1.0f, -1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, 1.0f, -1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, 1.0f, 1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f, -1.0f, 1.0f);
  // Left Face
  glColor3f(1.0f,0.0f,0.0f);glVertex3f(-1.0f, -1.0f, -1.0f);
  glColor3f(1.0f,0.0f,0.0f);glVertex3f(-1.0f, -1.0f, 1.0f);
  glColor3f(0.0f,0.0f,1.0f);glVertex3f(-1.0f, 1.0f, 1.0f);
  glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.0f, 1.0f, -1.0f);

  glEnd();
  glPopMatrix(); // Pop Matrix Off The Stack

  xrot+=1.3f;
  yrot+=1.2f;
  zrot+=1.4f; // Decrease The Rotation Variable For The Quad
  //////////////////////////////////////////////////////////////////////////////
  // EXAMPLE OPENGL CODE END //////////////////////////////////////////////////////////

  // Swap our scene to the front

  SwapBuffers(m_hDC);

  Invalidate(FALSE);
 }

 void COpenGL::OnPaint()
 {
  CPaintDC dc(this); // device context for painting
 
  // TODO: Add your message handler code here
  ::ValidateRect ( m_hWnd, NULL );

  // Do not call CWnd::OnPaint() for painting messages
 }

 void COpenGL::OnSize(UINT nType, int cx, int cy)
 {
  CWnd::OnSize(nType, cx, cy);

  // TODO: Add your message handler code here
  if ( cy==0) { // Prevent A Divide By Zero By
   cy=1; // Making Height Equal One
  }

  glViewport(0,0,cx,cy); // Reset The Current Viewport

  glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
  glLoadIdentity(); // Reset The Projection Matrix

  gluPerspective(45.0f,(GLfloat)cx/(GLfloat)cy,0.1f,100.0f); // Calculate The Aspect Ratio Of The Window

  glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
  glLoadIdentity(); // Reset The Modelview Matrix

 }

 BOOL COpenGL::SetFullScreen(int width, int height, int depth)
 {
  if(!m_bInit) return FALSE;
  if (m_bFullScreen) return TRUE;

  DEVMODE dmScreenSettings; // Device Mode
  memset(&dmScreenSettings,0,sizeof(dmScreenSettings)); // Makes Sure Memory's Cleared
  dmScreenSettings.dmSize=sizeof(dmScreenSettings); // Size Of The Devmode Structure
  dmScreenSettings.dmPelsWidth = width; // Selected Screen Width
  dmScreenSettings.dmPelsHeight = height; // Selected Screen Height
  dmScreenSettings.dmBitsPerPel = depth; // Selected Bits Per Pixel
  dmScreenSettings.dmFields=DM_BITSPERPEL

关键词:制作一个基于MFC对话框的OpenGL类




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版