Fermat
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
glut_viewer.h
1 /*
2  * Fermat
3  *
4  * Copyright (c) 2016-2019, NVIDIA CORPORATION. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the NVIDIA CORPORATION nor the
14  * names of its contributors may be used to endorse or promote products
15  * derived from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #pragma once
30 
31 #include <renderer.h>
32 #include <GL/freeglut.h>
33 #include <buffers.h>
34 #include <vector>
35 #include <cugar/basic/threads.h>
36 
37 // A class encpasulating our GLUT renderer
38 //
40 {
41  enum Orientation { X_UP, Y_UP, Z_UP };
42 
43  void init(int argc, char** argv);
44 
45  static void display();
46  static void idle();
47  static void mouse(int button, int state, int x, int y);
48  static void motion(int x, int y);
49  static void keyboard(unsigned char character, int x, int y);
50 
51  GLuint m_texture;
52  Camera m_camera_o;
53  DirectionalLight m_light_o;
54  int2 m_mouse;
55  float m_mouse_depth;
56  bool m_dollying;
57  bool m_panning;
58  bool m_walking;
59  bool m_zooming;
60  bool m_moving_selection;
61  bool m_light_rotation;
62  Orientation m_orientation;
63  bool m_dirty;
64  bool m_dirty_geo;
65  uint32 m_instance;
66  uint32 m_selected_group;
67  char m_output_name[1024];
68  FILE* m_ffmpeg;
69  FILE* m_camera_path;
70  bool m_record;
71  bool m_playback;
72  bool m_accumulation;
73 
74  cugar::Mutex mutex;
75 };
76 
77 // global RenderingContext instance
78 extern GlutViewer* s_renderer;
79 
80 // main entry point to start the viewer
81 FERMAT_API void start_glut_viewer(int argc, char** argv);
Definition: lights.h:249
Definition: threads.h:145
Definition: camera.h:46
Definition: glut_viewer.h:39
Definition: renderer.h:52