GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: tests/gl.cpp Lines: 0 23 0.0 %
Date: 2024-04-14 11:13:22 Branches: 0 46 0.0 %

Line Branch Exec Source
1
#include <stdio.h>
2
3
#include <iostream>
4
5
#ifdef _WIN32
6
#include <Windows.h>
7
#endif
8
9
#include <osg/GLExtensions>
10
#include <osgViewer/Viewer>
11
12
const int OSG_WIDTH = 1024;
13
const int OSG_HEIGHT = 960;
14
15
class TestSupportOperation : public osg::GraphicsOperation {
16
 public:
17
  TestSupportOperation()
18
      : osg::Referenced(true),
19
        osg::GraphicsOperation("TestSupportOperation", false),
20
        m_supported(true),
21
        m_errorMsg(),
22
        m_version(1.3) {}
23
24
  virtual void operator()(osg::GraphicsContext* gc) {
25
    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(m_mutex);
26
    osg::GLExtensions* gl2ext = gc->getState()->get<osg::GLExtensions>();
27
28
    if (gl2ext) {
29
      if (!gl2ext->isGlslSupported) {
30
        m_supported = false;
31
        m_errorMsg = "ERROR: GLSL not supported by OpenGL driver.";
32
      } else
33
        m_version = gl2ext->glVersion;
34
    } else {
35
      m_supported = false;
36
      m_errorMsg = "ERROR: GLSL not supported.";
37
    }
38
  }
39
40
  OpenThreads::Mutex m_mutex;
41
  bool m_supported;
42
  std::string m_errorMsg;
43
  float m_version;
44
};
45
46
int main(int, char**) {
47
#ifdef _WIN32
48
  ::SetProcessDPIAware();
49
#endif
50
51
  osgViewer::Viewer viewer;
52
  viewer.setUpViewInWindow(100, 100, OSG_WIDTH, OSG_HEIGHT);
53
54
  // openGL version:
55
  osg::ref_ptr<TestSupportOperation> so = new TestSupportOperation;
56
  viewer.setRealizeOperation(so.get());
57
  viewer.realize();
58
59
  if (so->m_supported)
60
    std::cout << "GLVersion=" << so->m_version << std::endl;
61
  else
62
    std::cout << so->m_errorMsg << std::endl;
63
64
  return viewer.run();
65
}