Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Attributes | Static Private Attributes
omni::visual::Grid Class Reference

A cartesian grid with lining adapted to distance. More...

#include <Grid.h>

Inheritance diagram for omni::visual::Grid:
Inheritance graph
[legend]
Collaboration diagram for omni::visual::Grid:
Collaboration graph
[legend]

Public Member Functions

 Grid (CameraInterface const *)
 
 ~Grid ()
 
void draw () const
 Draw grid. More...
 
void draw (float _alpha) const
 Draw grid with alpha value. More...
 
void update ()
 Update grid mesh. More...
 
void setResolution (QSize _resolution)
 Resolution. More...
 
QSize const & resolution () const
 Return resolution. More...
 
QVector2D const & size () const
 
void setSize (QVector2D const &_size)
 Set size of grid. More...
 
void setCamera (CameraInterface const *)
 
CameraInterface const * camera () const
 
- Public Member Functions inherited from omni::visual::Interface
virtual ~Interface ()
 

Private Attributes

QSize resolution_
 
CameraInterface const * camera_ = nullptr
 
Plane plane_
 
QVector2D size_
 

Static Private Attributes

static ContextBoundPtr
< QOpenGLShaderProgram > 
shader_
 

Additional Inherited Members

- Static Protected Member Functions inherited from omni::visual::Interface
static void vertex3 (QVector3D const &)
 glVertex3f from QVector3D More...
 
static void visualLine (QVector3D const &_from, QVector3D const &_to)
 Draws a line. More...
 
static void color (QColor _color, float _alpha=1.0)
 glColor4f from QColor More...
 

Detailed Description

A cartesian grid with lining adapted to distance.

Constructor & Destructor Documentation

omni::visual::Grid::Grid ( CameraInterface const *  _camera)
28  :
29  camera_(_camera),
30  size_(10.0, 10.0) {
31  setResolution(QSize(1024, 1024));
32  plane_.resize(2, 2);
33  }
Plane plane_
Definition: Grid.h:68
CameraInterface const * camera_
Definition: Grid.h:67
QVector2D size_
Definition: Grid.h:69
void resize(size_t _horizontal, size_t _vertical)
Set horizontal and vertical subdivisions (does not regenerate the.
Definition: Plane.cpp:98
void setResolution(QSize _resolution)
Resolution.
Definition: Grid.cpp:73
omni::visual::Grid::~Grid ( )
35 {}

Member Function Documentation

CameraInterface const * omni::visual::Grid::camera ( ) const
89  {
90  return camera_;
91  }
CameraInterface const * camera_
Definition: Grid.h:67
void omni::visual::Grid::draw ( ) const
virtual

Draw grid.

Implements omni::visual::Interface.

37  {
38  draw(1.0);
39  }
void draw() const
Draw grid.
Definition: Grid.cpp:37
void omni::visual::Grid::draw ( float  _alpha) const

Draw grid with alpha value.

41  {
42  if (!shader_) return;
43  withCurrentContext([&](QOpenGLFunctions& _) {
44  shader_->bind();
45  shader_->setUniformValue("resolution",
46  GLfloat(resolution_.width() * size().x()),
47  GLfloat(resolution_.height() * size().y()));
48  shader_->setUniformValue("cam_pos", camera_->eye());
49  shader_->setUniformValue("dir", camera_->direction().vec());
50  shader_->setUniformValue("alpha", _alpha);
51  glPushMatrix();
52  {
53  glScalef(size_.x(), size_.y(), 1.0);
54  plane_.draw();
55  }
56  glPopMatrix();
57  shader_->release();
58  });
59  }
Plane plane_
Definition: Grid.h:68
QVector3D eye() const
get tracker position
Definition: Tracker.cpp:44
CameraInterface const * camera_
Definition: Grid.h:67
static ContextBoundPtr< QOpenGLShaderProgram > shader_
Definition: Grid.h:70
QVector2D size_
Definition: Grid.h:69
void withCurrentContext(ContextFunctor f)
Do OpenGL operations with current context, if it exists.
Definition: ContextSwitch.cpp:45
QVector2D const & size() const
Definition: Grid.cpp:77
PolarVec & direction()
Return direction as polar vector.
Definition: Tracker.cpp:79
QSize resolution_
Definition: Grid.h:66
void draw() const
Draw plane.
Definition: Plane.cpp:29
QSize const & omni::visual::Grid::resolution ( ) const

Return resolution.

69  {
70  return resolution_;
71  }
QSize resolution_
Definition: Grid.h:66
void omni::visual::Grid::setCamera ( CameraInterface const *  _camera)
85  {
86  camera_=_camera;
87  }
CameraInterface const * camera_
Definition: Grid.h:67
void omni::visual::Grid::setResolution ( QSize  _resolution)

Resolution.

73  {
74  resolution_ = _resolution;
75  }
QSize resolution_
Definition: Grid.h:66
void omni::visual::Grid::setSize ( QVector2D const &  _size)

Set size of grid.

81  {
82  size_=_size;
83  }
QVector2D size_
Definition: Grid.h:69
QVector2D const & omni::visual::Grid::size ( ) const
77  {
78  return size_;
79  }
QVector2D size_
Definition: Grid.h:69
void omni::visual::Grid::update ( )
virtual

Update grid mesh.

Reimplemented from omni::visual::Interface.

61  {
62  primaryContextSwitch([&](QOpenGLFunctions& _) {
63  initShader(shader_,"grid");
64 
65  plane_.update();
66  });
67  }
Plane plane_
Definition: Grid.h:68
void initShader(QOpenGLShaderProgram &_s, const char *_filename)
Initialize shader: load from file and compile.
Definition: Shader.cpp:27
static ContextBoundPtr< QOpenGLShaderProgram > shader_
Definition: Grid.h:70
void primaryContextSwitch(ContextFunctor f)
Switch to primary context to create OpenGL objects like textures etc.
Definition: ContextSwitch.cpp:40
void update(texcoord_transform_functor_type _f)
Update mesh with texcoord transformation.
Definition: Plane.cpp:34

Field Documentation

CameraInterface const* omni::visual::Grid::camera_ = nullptr
private
Plane omni::visual::Grid::plane_
private
QSize omni::visual::Grid::resolution_
private
ContextBoundPtr< QOpenGLShaderProgram > omni::visual::Grid::shader_
staticprivate
QVector2D omni::visual::Grid::size_
private

The documentation for this class was generated from the following files: