00001 #pragma once 00002 00003 #ifndef __v_slice_renderer_h 00004 #define __v_slice_renderer_h 00005 00006 #include "VRenderer.h" 00007 00008 class VFramebufferObject; 00009 00010 class VSliceRenderer : public VRenderer 00011 { 00012 public: 00013 00017 VSliceRenderer(); 00018 00023 VSliceRenderer(VVolume * volume); 00024 00028 ~VSliceRenderer() 00029 { 00030 } 00031 00035 void draw(); 00036 00040 void processInput(guiInput input); 00041 00046 void setActiveSaggitalSlice(int s) 00047 { 00048 m_active_saggital = s; 00049 } 00050 00055 void setActiveCorronalSlice(int s) 00056 { 00057 m_active_corronal = s; 00058 } 00059 00064 void setActiveTransversalSlice(int s) 00065 { 00066 m_active_transversal = s; 00067 } 00068 00073 void activate_tf(int v) 00074 { 00075 m_tf_activated = v; 00076 } 00077 00082 activeSlice getSliceMode() 00083 { 00084 return m_ActiveSlice; 00085 } 00086 00091 void setSliceMode(activeSlice mode) 00092 { 00093 m_ActiveSlice = mode; 00094 } 00095 00100 void setVolume(VVolume * volume) 00101 { 00102 m_Volume = volume; 00103 } 00104 00108 void loadProgram() 00109 { 00110 m_Program_with_tf = VProgram(VVertexShader("shader/slice_vertex.glsl"), VFragmentShader("shader/slicetf_fragment.glsl")); 00111 m_Program_without_tf = VProgram(VFragmentShader("shader/slice_fragment.glsl")); 00112 m_ProgramLoaded = true; 00113 } 00114 00119 bool getProgramLoaded() 00120 { 00121 return m_ProgramLoaded; 00122 } 00123 00128 void setTransferFunctionHandle(unsigned int handle) 00129 { 00130 m_TransferFunctionHandle = handle; 00131 } 00132 00133 private: 00134 00138 void drawSaggitalSlice(); 00139 00143 void drawCorronalSlice(); 00144 00148 void drawTransversalSlice(); 00149 00153 void drawAllSlices(); 00154 00155 activeSlice m_ActiveSlice; 00156 int m_active_saggital; 00157 int m_active_corronal; 00158 int m_active_transversal; 00159 int m_tf_activated; 00161 VProgram m_Program_with_tf; 00162 VProgram m_Program_without_tf; 00164 bool m_ProgramLoaded; 00166 unsigned int m_TransferFunctionHandle; 00168 }; 00169 00170 #endif //__v_slice_renderer_h