summaryrefslogtreecommitdiffstats
path: root/src/datavis3d/engine/surface3drenderer_p.h
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-07-02 14:00:36 +0300
committerMika Salmela <mika.salmela@digia.com>2013-07-02 14:40:40 +0300
commit2767c2c0b7dfd165614450707c757d43be4f6360 (patch)
tree13c9b6217a7e17d1e93413abc4f7a3a877915fcc /src/datavis3d/engine/surface3drenderer_p.h
parent8ddb504c75949203c9982a3f6945b697b85c876d (diff)
Initial versions continue. Draws the background.
Change-Id: I50df7796080f0d8385a17ec34ef36087bd68e59d Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavis3d/engine/surface3drenderer_p.h')
-rw-r--r--src/datavis3d/engine/surface3drenderer_p.h52
1 files changed, 47 insertions, 5 deletions
diff --git a/src/datavis3d/engine/surface3drenderer_p.h b/src/datavis3d/engine/surface3drenderer_p.h
index d93adf10..11cb380f 100644
--- a/src/datavis3d/engine/surface3drenderer_p.h
+++ b/src/datavis3d/engine/surface3drenderer_p.h
@@ -52,22 +52,24 @@
#ifndef SURFACE3DRENDERER_P_H
#define SURFACE3DRENDERER_P_H
-#include "datavis3dglobal_p.h"
#include <QtCore/QSize>
#include <QtCore/QObject>
#include <QtGui/QOpenGLFunctions>
#include <QtGui/QFont>
#include <QWindow>
+#include "datavis3dglobal_p.h"
+#include "surface3dcontroller_p.h"
+
class QOpenGLShaderProgram;
QT_DATAVIS3D_BEGIN_NAMESPACE
class ShaderHelper;
class ObjectHelper;
+class TextureHelper;
class Theme;
class Drawer;
-class Surface3dController;
class CameraHelper;
class QT_DATAVIS3D_EXPORT Surface3dRenderer : public QObject, protected QOpenGLFunctions
@@ -86,7 +88,7 @@ public:
Surface3dController *m_controller;
- // Interaction related parameters
+ // Interaction related parameters // TODO: Moved to controller
MousePressType m_mousePressed;
QPoint m_mousePos;
SelectionMode m_selectionMode;
@@ -96,25 +98,53 @@ public:
Theme *m_theme;
LabelTransparency m_labelTransparency;
QFont m_font;
+ bool m_isGridEnabled;
+ bool m_isBackgroundEnabled;
+ ShadowQuality m_shadowQuality;
bool m_hasNegativeValues;
CameraHelper *m_camera;
private:
+ // Data parameters
+ GLint m_tickYCount;
+ GLfloat m_tickYStep;
+ GLint m_tickXCount;
+ GLint m_tickZCount;
+
+ // Internal attributes purely related to how the scene is drawn with GL.
QRect m_mainViewPort;
QRect m_sliceViewPort;
+ ShaderHelper *m_backgroundShader;
+ TextureHelper *m_textureHelper;
bool m_isInitialized;
+ GLfloat m_yRange; // m_heightNormalizer
+ GLfloat m_yAdjustment;
+ GLfloat m_xLength;
+ GLfloat m_zLength;
+ GLfloat m_maxDimension;
+ GLfloat m_scaleFactor;
+ GLfloat m_scaleX;
+ GLfloat m_scaleZ;
+ GLfloat m_maxSceneSize;
ObjectHelper *m_backgroundObj;
+ ObjectHelper *m_gridLineObj;
+ GLuint m_depthTexture;
+ GLuint m_depthFrameBuffer;
+ GLfloat m_shadowQualityToShader;
Drawer *m_drawer;
public:
- explicit Surface3dRenderer(QRect rect, Surface3dController *controller);
+ explicit Surface3dRenderer(Surface3dController *controller);
~Surface3dRenderer();
void initializeOpenGL();
void render(const GLuint defaultFboHandle = 0);
+ // TODO: Not thread-safe, needs rethinking how axes create labels
+ Drawer *drawer() { return m_drawer; }
+
// Size
const QSize size();
const QRect boundingRect();
@@ -136,12 +166,24 @@ public:
void mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos);
void mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos);
void wheelEvent(QWheelEvent *event);
- void resizeNotify();
+ void handleResize();
+
+#if !defined(QT_OPENGL_ES_2)
+ void updateDepthBuffer();
+#endif
void loadBackgroundMesh();
+ void loadGridLineMesh();
+
+ // TODO: temp
+ void setYRangeStuff(GLint tickCount, GLfloat step, GLfloat minimum);
+ void setXZStuff(GLint tickXCount, GLint tickZCount);
private:
void drawScene(const GLuint defaultFboHandle);
+ void calculateSceneScalingFactors();
+ void initBackgroundShaders(const QString &vertexShader, const QString &fragmentShader);
+
Q_DISABLE_COPY(Surface3dRenderer)
};