00001
00002
00003
00004
00005
00006
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