Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
RenderModeGL.hh
1 #ifndef __RenderModeGL_h__
2 #define __RenderModeGL_h__
3 
4 #include <bias_config.h>
5 #ifndef BIAS_HAVE_OPENGL
6 # error Please recompile BIAS with USE_OPENGL to use ImgObjGL
7 #endif // BIAS_HAVE_OPENGL
8 
9 #include "biasgl.h"
10 
11 #include <Base/Math/Vector4.hh>
12 
13 // used by glClear
14 #ifndef CLEAR_DEFAULT_MASK
15 # define CLEAR_DEFAULT_MASK GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_ACCUM_BUFFER_BIT | GL_STENCIL_BUFFER_BIT
16 #endif // CLEAR_DEFAULT_MASK
17 
18 namespace BIAS {
19 
21  MONO=0 /* one display but possibly double buffered */
22  ,STEREO_UNTOUCHED /* do not touch selcting the DrawBuffer, user is doing it himself */
23  ,STEREO_CONSUMER_NV /* consumer 3D stereo using NV driver. works only in fullscreen */
24  ,STEREO_QUADBUFFERED /* page flipping quad buffered stereo, e.g. with consumer shutter glasses like Elsa Revelator */
25  ,STEREO_LEFT_RIGHT /* stereo without sdouble buffering */
26  ,STEREO_TWOSCREENS /* two monitors, e.g. HMD or polarized glasses */
27  //,STEREO_ANAGLYPH_RG /* anaglyph using left:red right: green (with one screen) */
28  //,STEREO_ANAGLYPH_GR /* anaglyph using green-red */
29  //,STEREO_ANAGLYPH_RB /* anaglyph using red-blue */
30  //,STEREO_ANAGLYPH_BR /* anaglyph using blue-red*/
31  };
32 
33  /**
34  @ingroup g_gui
35  @brief GLRenderMode describes mode for rendering.
36 
37  In particular
38  #culling,
39  #pointsize,
40  #linesize,
41  #buffer mode (wireframe, points..)
42  #stereo mod e(e.g. page flipping) for display.
43  # etc...
44  @author Jan Woetzel */
45  class BIASGui_EXPORT RenderModeGL {
46  public:
48  {
49  polygonmodeFRONT=GL_FILL;
50  polygonmodeBACK=GL_FILL;
51  shademodel=GL_SMOOTH;
52 
53  enable_cullface=false;
54  cullface=GL_BACK;
55 
56  pointsize=1.0f;
57  linewidth=1.0f;
58 
59  // handled extra by Display function
60  // because it has to match SwapBuffers
61  drawbuffermode=BIAS::STEREO_UNTOUCHED;
62  //drawbuffermode=BIAS::STEREO_CONSUMER_NV;
63  vsync=false;
64  };
65 
66  /** no 3D streo enabled, single viewpoint only? */
67  bool IsMono() const {return (drawbuffermode==BIAS::MONO);};
68 
69  /** page flipping quad buffered stereo?
70  E.g. with consumer shutter glasses like Elsa Revelator */
71  bool IsStereoQuadbuffered() const {return (drawbuffermode==BIAS::STEREO_QUADBUFFERED);};
72 
73  // members:
74 
75  // GL_FILL, GL_FLAT, GL_POINT
76  GLenum polygonmodeFRONT; ///< glPoygonMode(GL_FRONT...
77  GLenum polygonmodeBACK; ///< glPoygonMode(GL_BACK...
78 
79  // GL_SMOOTH, GL_FLAT
80  GLenum shademodel; ///< glShadeModel(...
81 
83  GLenum cullface; ///< glCullFace: GL_FRONT, GL_BACK, and GL_FRONT_AND_BACK
84 
85  float pointsize;
86  float linewidth;
87 
88  // 3D display using shutter glasses or multiple monitors with polarizers?
89  BIAS::DrawbufferMode drawbuffermode; // enable page swap stereo, e.g. with shutetr glasses
90 
91  bool vsync; // true to enable vertical sync
92  };
93 } // namespace BIAS
94 
95 #endif
96 
GLenum cullface
glCullFace: GL_FRONT, GL_BACK, and GL_FRONT_AND_BACK
Definition: RenderModeGL.hh:83
GLenum polygonmodeBACK
glPoygonMode(GL_BACK...
Definition: RenderModeGL.hh:77
DrawbufferMode
Definition: RenderModeGL.hh:20
GLenum shademodel
glShadeModel(...
Definition: RenderModeGL.hh:80
bool IsMono() const
no 3D streo enabled, single viewpoint only?
Definition: RenderModeGL.hh:67
GLRenderMode describes mode for rendering.
Definition: RenderModeGL.hh:45
BIAS::DrawbufferMode drawbuffermode
Definition: RenderModeGL.hh:89