Fermat
Main Page
Modules
+
Classes
Class List
Class Index
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Modules
Pages
src
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
//
39
struct
GlutViewer
:
public
RenderingContext
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);
DirectionalLight
Definition:
lights.h:249
cugar::Mutex
Definition:
threads.h:145
Camera
Definition:
camera.h:46
GlutViewer
Definition:
glut_viewer.h:39
RenderingContext
Definition:
renderer.h:52
Generated by
1.8.13