33 #ifdef G4VIS_BUILD_OPENGL_DRIVER
35 #ifndef G4OPENGLVIEWER_HH
36 #define G4OPENGLVIEWER_HH
40 #ifdef G4OPENGL_VERSION_2
44 class G4OpenGLSceneHandler;
48 class G4OpenGLViewerPickMap {
54 inline void setHitNumber(
G4int n) {
58 inline void setSubHitNumber(
G4int n) {
61 inline void setPickName(
G4int n) {
65 inline void addAttributes(
G4String att) {
66 fAttributes.push_back(att);
73 inline G4int getHitNumber() {
77 inline G4int getSubHitNumber() {
81 inline G4int getPickName() {
85 inline std::vector <G4String > getAttributes() {
96 std::vector <G4String > fAttributes;
101 class G4OpenGLViewer:
virtual public G4VViewer {
103 friend class G4OpenGLSceneHandler;
104 friend class G4OpenGLImmediateSceneHandler;
105 friend class G4OpenGLStoredSceneHandler;
106 friend class G4OpenGLFileSceneHandler;
111 void ClearViewWithoutFlush ();
114 virtual bool exportImage(std::string
name=
"",
int width=-1,
int height=-1);
116 bool setExportImageFormat(std::string format,
bool quiet =
false);
120 #ifdef G4OPENGL_VERSION_2
121 inline G4OpenGLVboDrawer* getWtDrawer() {
return fVboDrawer;}
124 void setVboDrawer(G4OpenGLVboDrawer* drawer);
125 G4OpenGLVboDrawer* fVboDrawer;
128 return fGlViewInitialized;
133 G4OpenGLViewer (G4OpenGLSceneHandler& scene);
134 virtual ~G4OpenGLViewer ();
137 G4OpenGLViewer(
const G4OpenGLViewer&);
138 G4OpenGLViewer& operator= (
const G4OpenGLViewer&);
144 virtual void DrawText(
const G4Text&);
145 void ChangePointSize(
G4double size);
147 void HaloingFirstPass ();
148 void HaloingSecondPass ();
149 void HLRFirstPass ();
150 void HLRSecondPass ();
151 void HLRThirdPass ();
152 void InitializeGLView ();
154 void ResizeWindow(
unsigned int,
unsigned int);
155 virtual G4String Pick(GLdouble
x, GLdouble y);
156 std::vector < G4OpenGLViewerPickMap* > GetPickDetails(GLdouble
x, GLdouble y);
157 virtual void CreateFontLists () {}
172 std::string getRealPrintFilename();
173 unsigned int getWinWidth()
const;
174 unsigned int getWinHeight()
const;
177 GLdouble getSceneNearWidth();
178 GLdouble getSceneFarWidth();
179 GLdouble getSceneDepth();
180 void addExportImageFormat(std::string format);
183 G4bool isFramebufferReady();
185 void g4GluPickMatrix(GLdouble
x, GLdouble y, GLdouble
width, GLdouble height,
189 void g4GluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,
190 GLdouble centerx, GLdouble centery, GLdouble
192 GLdouble upx, GLdouble upy, GLdouble upz );
194 void g4GlOrtho (GLdouble
left, GLdouble
right,
195 GLdouble bottom, GLdouble top,
196 GLdouble near, GLdouble far);
198 void g4GlFrustum (GLdouble
left, GLdouble
right,
199 GLdouble bottom, GLdouble top,
200 GLdouble near, GLdouble far);
206 G4OpenGLSceneHandler& fOpenGLSceneHandler;
209 transparency_enabled,
210 antialiasing_enabled,
215 G4double fDisplayHeadTimeX, fDisplayHeadTimeY;
217 G4double fDisplayHeadTimeRed, fDisplayHeadTimeGreen, fDisplayHeadTimeBlue;
218 G4bool fDisplayLightFront;
219 G4double fDisplayLightFrontX, fDisplayLightFrontY, fDisplayLightFrontZ,
221 G4double fDisplayLightFrontRed, fDisplayLightFrontGreen, fDisplayLightFrontBlue;
226 unsigned int fWinSize_x;
227 unsigned int fWinSize_y;
228 std::vector < std::string > fExportImageFormatVector;
229 std::string fDefaultExportImageFormat;
230 std::string fExportImageFormat;
231 int fExportFilenameIndex;
241 int fGl2psDefaultLineWith;
242 int fGl2psDefaultPointSize;
243 bool fGlViewInitialized;
249 G4int getRealExportWidth();
250 G4int getRealExportHeight();
251 GLubyte* grabPixels (
int inColor,
253 unsigned int height);
254 bool printNonVectoredEPS ();
257 bool printVectoredEPS();
260 bool fIsGettingPickInfos;
263 #ifdef G4OPENGL_VERSION_2
265 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER
266 inline Wt::WGLWidget::Program getShaderProgram() {
267 return fShaderProgram;
269 inline Wt::WGLWidget::UniformLocation getShaderProjectionMatrix() {
270 return fpMatrixUniform;
272 inline Wt::WGLWidget::UniformLocation getShaderTransformMatrix() {
273 return ftMatrixUniform;
276 inline GLuint getShaderProgram() {
277 return fShaderProgram;
279 inline GLuint getShaderProjectionMatrix() {
280 return fpMatrixUniform;
282 inline GLuint getShaderTransformMatrix() {
283 return ftMatrixUniform;
285 inline GLuint getShaderViewModelMatrix() {
286 return fmvMatrixUniform;
293 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER
294 #define Shader Wt::WGLWidget::Shader
296 #define Shader GLuint
300 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER
301 Wt::WGLWidget::Program fShaderProgram;
304 Wt::WGLWidget::AttribLocation fVertexPositionAttribute;
305 Wt::WGLWidget::AttribLocation fVertexNormalAttribute;
306 Wt::WGLWidget::UniformLocation fpMatrixUniform;
307 Wt::WGLWidget::UniformLocation fcMatrixUniform;
308 Wt::WGLWidget::UniformLocation fmvMatrixUniform;
309 Wt::WGLWidget::UniformLocation fnMatrixUniform;
310 Wt::WGLWidget::UniformLocation ftMatrixUniform;
312 GLuint fShaderProgram;
315 GLuint fVertexPositionAttribute;
316 GLuint fVertexNormalAttribute;
317 GLuint fpMatrixUniform;
318 GLuint fcMatrixUniform;
319 GLuint fmvMatrixUniform;
320 GLuint fnMatrixUniform;
321 GLuint ftMatrixUniform;
virtual void ClearView()=0
void print(G4double elem)
std::string getName(const ParticleType t)
Get the native INCL name of the particle.