00001 #ifndef GL3DView_H
00002 #define GL3DView_H
00003
00004 #include "GLView.h"
00005 #include "GLFramebuffer.h"
00006 #include "GLTexture1D.h"
00007 #include "GLProgramm.h"
00008
00009 #define shaderCount 2
00010
00011 class GLMultiProgramm
00012 {
00013 public:
00014 GLMultiProgramm();
00015 void load(QString &vertexShaderName, QString &loopFragmentShaderName, QString &lastFragmentShaderName);
00016 void link();
00017 void free();
00018
00019 GLProgramm loopProgramm, lastProgramm;
00020 };
00021
00022 class GL3DView : public GLView
00023 {
00024 public:
00025 GL3DView();
00026 ~GL3DView();
00027
00028 void initializeGL();
00029 void uninitializeGL();
00030 void paintGL();
00031 void resizeGL(int width, int height);
00032 void mousePressEvent(QMouseEvent *event);
00033 void mouseMoveEvent(QMouseEvent *event);
00034 void wheelEvent(QWheelEvent *event);
00035
00036 protected:
00037 void setColorVertex(GLfloat x, GLfloat y, GLfloat z);
00038 void drawCube();
00039 void loadTransferFunction();
00040 void drawColorCubes();
00041 void drawVolume(GLFramebuffer *framebuffer);
00042
00043 private:
00044 bool viewChanged;
00045 GLTexture1D transferTexture;
00046 GLFramebuffer rtBoxFrontBuffer, rtBoxBackBuffer, rcSmallBuffer, rcBigBuffer;
00047 GLMultiProgramm rcProgramms[shaderCount];
00048 GLProgramm rtProgramm;
00049 GLuint rtSize, rcBigSize, rcSmallSize;
00050 GLuint minFps;
00051 GLuint width, height;
00052 GLuint loopIterations;
00053 GLfloat aspectRatio;
00054 GLfloat xRot, zRot, dist;
00055 QPoint lastPos;
00056 };
00057
00058 #endif // GL3DView_H