Skip to content

Commit 0dbff0a

Browse files
committed
Allow Protonect to run without a viewer
1 parent 3da9d4a commit 0dbff0a

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

examples/protonect/Protonect.cpp

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ int main(int argc, char *argv[])
9999

100100
std::string serial = freenect2.getDefaultDeviceSerialNumber();
101101

102+
bool viewer_enabled = true;
103+
102104
for(int argI = 1; argI < argc; ++argI)
103105
{
104106
const std::string arg(argv[argI]);
@@ -130,6 +132,10 @@ int main(int argc, char *argv[])
130132
{
131133
serial = arg;
132134
}
135+
else if(arg == "-noviewer")
136+
{
137+
viewer_enabled = false;
138+
}
133139
else
134140
{
135141
std::cout << "Unknown argument: " << arg << std::endl;
@@ -167,9 +173,13 @@ int main(int argc, char *argv[])
167173

168174
libfreenect2::Registration* registration = new libfreenect2::Registration(dev->getIrCameraParams(), dev->getColorCameraParams());
169175

176+
size_t framecount = 0;
170177
#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
171178
Viewer viewer;
172-
viewer.initialize();
179+
if (viewer_enabled)
180+
viewer.initialize();
181+
#else
182+
viewer_enabled = false;
173183
#endif
174184

175185
while(!protonect_shutdown)
@@ -181,15 +191,22 @@ int main(int argc, char *argv[])
181191

182192
registration->apply(rgb, depth, &undistorted, &registered);
183193

194+
framecount++;
195+
if (!viewer_enabled)
196+
{
197+
if (framecount % 100 == 0)
198+
std::cout << "The viewer is turned off. Received " << framecount << " frames. Ctrl-C to stop." << std::endl;
199+
listener.release(frames);
200+
continue;
201+
}
202+
184203
#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
185204
viewer.addFrame("RGB", rgb);
186205
viewer.addFrame("ir", ir);
187206
viewer.addFrame("depth", depth);
188207
viewer.addFrame("registered", &registered);
189208

190-
protonect_shutdown = viewer.render();
191-
#else
192-
protonect_shutdown = true;
209+
protonect_shutdown = protonect_shutdown || viewer.render();
193210
#endif
194211

195212
listener.release(frames);

examples/protonect/viewer.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ Viewer::Viewer() : shader_folder("src/shader/")
55
// init glfw - if already initialized nothing happens
66
int init = glfwInit();
77

8+
}
9+
10+
void Viewer::initialize()
11+
{
812
// setup context
913
glfwDefaultWindowHints();
1014
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
@@ -16,10 +20,6 @@ Viewer::Viewer() : shader_folder("src/shader/")
1620
//glfwWindowHint(GLFW_VISIBLE, debug ? GL_TRUE : GL_FALSE);
1721

1822
window = glfwCreateWindow(1280, 800, "Viewer", 0, NULL);
19-
}
20-
21-
void Viewer::initialize()
22-
{
2323
glfwMakeContextCurrent(window);
2424
OpenGLBindings *b = new OpenGLBindings();
2525
flextInit(window, b);
@@ -190,4 +190,4 @@ bool Viewer::render()
190190
void Viewer::addFrame(std::string id, libfreenect2::Frame* frame)
191191
{
192192
frames[id] = frame;
193-
}
193+
}

0 commit comments

Comments
 (0)