网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
制作一个基于MFC对话框的OpenGL类
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
L,(HBRUSH)GetStockObject(BLACK_BRUSH),NULL);

  CreateEx(0,className,"OpenGL",WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,rect,parent,0);
 }

 int COpenGL::OnCreate(LPCREATESTRUCT lpCreateStruct)
 {
  if (CWnd::OnCreate(lpCreateStruct) == -1)
   return -1;

  // TODO: Add your specialized creation code here
  EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &m_DMsaved);

  GLuint PixelFormat; // Holds The Results After Searching For A Match
  static PIXELFORMATDESCRIPTOR pfd= // pfd Tells Windows How We Want Things To Be
  {
   sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor
   1, // Version Number
   PFD_DRAW_TO_WINDOW | // Format Must Support Window
   PFD_SUPPORT_OPENGL | // Format Must Support OpenGL
   PFD_DOUBLEBUFFER, // Must Support Double Buffering
   PFD_TYPE_RGBA, // Request An RGBA Format
   m_DMsaved.dmBitsPerPel, // Select Our Color Depth
   0, 0, 0, 0, 0, 0, // Color Bits Ignored
   0, // No Alpha Buffer
   0, // Shift Bit Ignored
   0, // No Accumulation Buffer
   0, 0, 0, 0, // Accumulation Bits Ignored
   16, // 16Bit Z-Buffer (Depth Buffer)
   0, // No Stencil Buffer
   0, // No Auxiliary Buffer
   PFD_MAIN_PLANE, // Main Drawing Layer
   0, // Reserved
   0, 0, 0 // Layer Masks Ignored
  };

  if ( !( m_hDC = ::GetDC ( m_hWnd ) ) ) { // Did We Get A Device Context?
   KillGLWindow (); // Reset The Display
   TRACE ( "Can''t Create A GL Device Context." );
   return FALSE;
  }

  if ( !( PixelFormat = ChoosePixelFormat ( m_hDC, &pfd ) ) ) { // Did Windows Find A Matching Pixel Format?
   KillGLWindow (); // Reset The Display
   TRACE ( "Can''t Find A Suitable PixelFormat." );
   return FALSE;
  }

  if ( !SetPixelFormat ( m_hDC, PixelFormat, &pfd ) ){ // Are We Able To Set The Pixel Format?
   KillGLWindow (); // Reset The Display
   TRACE ( "Can''t Set The PixelFormat." );
   return FALSE;
  }

  if ( !( m_hRC = wglCreateContext ( m_hDC ) ) ) { // Are We Able To Get A Rendering Context?
   KillGLWindow (); // Reset The Display
   TRACE( " Can''t Create A GL Rendering Context." );
   return FALSE;
  }

  if ( !wglMakeCurrent ( m_hDC, m_hRC ) ) { // Try To Activate The Rendering Context
   KillGLWindow (); // Reset The Display
   TRACE ( "Can''t Activate The GL Rendering Context." );
   return FALSE;
  } 

  if ( !InitGL () ) { // Initialize Our Newly Created GL Window
   KillGLWindow (); // Reset The Display
   TRACE ( "Initialization Failed." );
   return FALSE;
  }
  m_bInit = TRUE;
  return 0;
 }

 void COpenGL::KillGLWindow()
 {
  if (m_bFullScreen) // Are We In Fullscreen Mode?
  {
   if (!ChangeDisplaySettings(NULL,CDS_TEST)) { // if the shortcut doesn''t work
    ChangeDisplaySettings(NULL,CDS_RESET); // Do it anyway (to get the values out of the registry)
    ChangeDisplaySettings(&m_DMsav

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号