OpenGLDiagnostics.cpp
上传用户:shxiangxiu
上传日期:2007-01-03
资源大小:1101k
文件大小:4k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // OpenGLDiagnostics.cpp : implementation file
  3. //
  4. // glOOP (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1998
  6. //
  7. // OpenGL is a registered trademark of Silicon Graphics
  8. //
  9. //
  10. // This program is provided for educational and personal use only and
  11. // is provided without guarantee or warrantee expressed or implied.
  12. //
  13. // Commercial use is strickly prohibited without written permission
  14. // from ImageWare Development.
  15. //
  16. // This program is -not- in the public domain.
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include "stdafx.h"
  20. #include "glOOP.h"
  21. #include "OpenGLDiagnostics.h"
  22. #ifdef _DEBUG
  23. #define new DEBUG_NEW
  24. #undef THIS_FILE
  25. static char THIS_FILE[] = __FILE__;
  26. #endif
  27. /////////////////////////////////////////////////////////////////////////////
  28. // COpenGLDiagnostics dialog
  29. COpenGLDiagnostics::COpenGLDiagnostics(HDC hDC, HGLRC hRC, CWnd* pParent /*=NULL*/)
  30. : CDialog(COpenGLDiagnostics::IDD, pParent)
  31. {
  32. // Save the device context
  33. m_hDC = hDC;
  34. // Save the rendering context
  35. m_hRC = hRC;
  36. //{{AFX_DATA_INIT(COpenGLDiagnostics)
  37. // NOTE: the ClassWizard will add member initialization here
  38. m_szVendor = _T("");
  39. m_szExtensions = _T("");
  40. m_szRenderer = _T("");
  41. m_szVersion = _T("");
  42. m_szGluVendor = _T("");
  43. m_szGluExtensions = _T("");
  44. m_szError1 = _T("");
  45. m_szError2 = _T("");
  46. m_szError3 = _T("");
  47. m_szError4 = _T("");
  48. m_szError5 = _T("");
  49. m_szError6 = _T("");
  50. //}}AFX_DATA_INIT
  51. }
  52. void COpenGLDiagnostics::DoDataExchange(CDataExchange* pDX)
  53. {
  54. CDialog::DoDataExchange(pDX);
  55. //{{AFX_DATA_MAP(COpenGLDiagnostics)
  56. // NOTE: the ClassWizard will add DDX and DDV calls here
  57. DDX_Text(pDX, IDC_VENDOR, m_szVendor);
  58. DDX_Text(pDX, IDC_EXTENSIONS, m_szExtensions);
  59. DDX_Text(pDX, IDC_RENDERER, m_szRenderer);
  60. DDX_Text(pDX, IDC_VERSION, m_szVersion);
  61. DDX_Text(pDX, IDC_GLU_VENDOR, m_szGluVendor);
  62. DDX_Text(pDX, IDC_GLU_EXTENSIONS, m_szGluExtensions);
  63. DDX_Text(pDX, IDC_ERROR1, m_szError1);
  64. DDX_Text(pDX, IDC_ERROR2, m_szError2);
  65. DDX_Text(pDX, IDC_ERROR3, m_szError3);
  66. DDX_Text(pDX, IDC_ERROR4, m_szError4);
  67. DDX_Text(pDX, IDC_ERROR5, m_szError5);
  68. DDX_Text(pDX, IDC_ERROR6, m_szError6);
  69. //}}AFX_DATA_MAP
  70. }
  71. BEGIN_MESSAGE_MAP(COpenGLDiagnostics, CDialog)
  72. //{{AFX_MSG_MAP(COpenGLDiagnostics)
  73. //}}AFX_MSG_MAP
  74. END_MESSAGE_MAP()
  75. /////////////////////////////////////////////////////////////////////////////
  76. // COpenGLDiagnostics message handlers
  77. BOOL COpenGLDiagnostics::OnInitDialog() 
  78. {
  79. CDialog::OnInitDialog();
  80. const GLubyte* ext;
  81. GLenum glError;
  82. CenterWindow();
  83. if(m_hDC && m_hRC) {
  84. // Make the glContext current
  85. the3dEngine.EnableRC(m_hDC, m_hRC, TRUE);
  86. // Get diagnostic data..
  87. ext = glGetString(GL_VENDOR);
  88. m_szVendor = ext;
  89. ext = glGetString(GL_RENDERER);
  90. m_szRenderer = ext;
  91. ext = glGetString(GL_VERSION);
  92. m_szVersion = ext;
  93. ext = glGetString(GL_EXTENSIONS);
  94. m_szExtensions = ext;
  95. ext = gluGetString(GLU_VERSION);
  96. m_szGluVendor = ext;
  97. ext = gluGetString(GLU_EXTENSIONS);
  98. m_szGluExtensions = ext;
  99. // Display any recent error messages
  100. int i = 1;
  101. do {
  102. glError = glGetError();
  103. ext = gluErrorString(glError);
  104. switch (i)
  105. {
  106. case 1:
  107. m_szError1 = ext;
  108. case 2:
  109. m_szError2 = ext;
  110. case 3:
  111. m_szError3 = ext;
  112. case 4:
  113. m_szError4 = ext;
  114. case 5:
  115. m_szError5 = ext;
  116. case 6:
  117. m_szError6 = ext;
  118. default:
  119. break;
  120. }
  121. i++;
  122. } while(i < 7 && glError != GL_NO_ERROR);
  123. // Releases the device context that is used by the rendering context
  124. // to allow other rendering contexts to co-exist.
  125. the3dEngine.EnableRC(NULL, NULL, FALSE);
  126. }
  127. // Initialize dialog data
  128. UpdateData(FALSE);
  129. return TRUE;  // return TRUE unless you set the focus to a control
  130.               // EXCEPTION: OCX Property Pages should return FALSE
  131. }