diff options
author | Mika Salmela <mika.salmela@digia.com> | 2013-07-02 14:00:36 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-07-02 14:40:40 +0300 |
commit | 2767c2c0b7dfd165614450707c757d43be4f6360 (patch) | |
tree | 13c9b6217a7e17d1e93413abc4f7a3a877915fcc /src/datavis3d/engine/surface3drenderer_p.h | |
parent | 8ddb504c75949203c9982a3f6945b697b85c876d (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.h | 52 |
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) }; |