Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members

mitkVis2SurfaceScene.h

00001 /*=========================================================================
00002 
00003   Program:   3DMed
00004   Date:      $Date: 2014-02-25 18:30:00 +0800 $
00005   Version:   $Version: 4.6.0 $
00006   Copyright: MIPG, Institute of Automation, Chinese Academy of Sciences
00007 
00008 =========================================================================*/
00009 
00010 #ifndef __mitkVis2SurfaceScene_h
00011 #define __mitkVis2SurfaceScene_h
00012 
00013 #include "mitkVisualization2Includes.h"
00014 #include "mitkVis2Scene3D.h"
00015 #include "mitkVis2Vector3.h"
00016 
00017 class mitkMesh;
00018 
00019 struct MeshModel
00020 {
00021     MeshModel();
00022     ~MeshModel();
00023 
00024     mitkMesh* mesh;
00025     mitkVis2Vector3 color;
00026 
00027     float opacity;
00028 
00029     bool needUpdate;
00030     unsigned g_vboId;
00031     unsigned g_eboId;
00032 };
00033 
00034 class mitkMeshList;
00035 class mitkGLSLProgram;
00036 
00037 class MITK_VISUALIZATION2_API mitkVis2SurfaceScene : public mitkVis2Scene3D
00038 {
00039 public:
00040     MITK_TYPE(mitkVis2SurfaceScene,mitkVis2Scene3D)
00041     mitkVis2SurfaceScene(); 
00042 
00043     void AddMesh(mitkMesh* mesh);
00044     void RemoveMesh(mitkMesh* mesh);
00045     void RemoveMesh(int i);
00046 
00047     void SetColor(int i, float r, float g, float b);
00048     void SetOpacity(int i,float opacity);
00049 
00050     void GetColor(int i, float &r, float &g, float &b);
00051     void GetOpacity(int i,float &opacity);
00052 
00053     void SetOpaque(bool op);
00054     bool GetOpaque();
00055 
00056     void SetBackgroundColor(float r, float g, float b);
00057     void GetBackgroundColor(float &r, float &g, float &b);
00058 
00059     virtual void RenderGL();
00060     virtual void ResizeGL(int newX, int newY);
00061 
00062 protected:
00063     virtual ~mitkVis2SurfaceScene();
00064     void GetSize3D(float size3D[3]);
00065 
00066 private:
00067     void _getBounds(float boundingbox[6]);
00068     void _renderModels();
00069     void _renderOpaque();
00070     void _renderOIT();
00071     void _updateMesh(int i);
00072     void _makeProgram();
00073     void _makeFullScreenQuad();
00074 
00075     mitkMeshList *m_MeshList;   
00076 
00077     bool m_opaque;
00078     bool m_glewInit;
00079 
00080     mitkVis2Vector3 m_BackgroundColor;
00081 
00082     mitkGLSLProgram* m_Program;
00083     
00084     mitkGLSLProgram* m_Program_peel;
00085     mitkGLSLProgram* m_Program_final;
00086 
00087     GLuint g_quadDisplayList;
00088 
00089     bool m_buffersInit;
00090     GLuint g_frontFboId[2];
00091     GLuint g_frontDepthTexId[2];
00092     GLuint g_frontColorTexId[2];
00093     GLuint g_frontColorBlenderTexId;
00094     GLuint g_frontColorBlenderFboId;
00095 
00096 };
00097 
00098 #endif 

Generated on Tue Feb 25 15:00:37 2014 for MITK (Medical Imaging ToolKit) by  doxygen 1.4.3