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