Skip to content

Commit d65e34d

Browse files
committed
Merge pull request #130 from christiankerl/optional_opengl_dependencies
optional OpenGL dependency
2 parents e1c71ab + 14fc605 commit d65e34d

File tree

7 files changed

+53
-38
lines changed

7 files changed

+53
-38
lines changed

examples/protonect/CMakeLists.txt

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ SET(MY_DIR ${libfreenect2_SOURCE_DIR})
77

88
OPTION(ENABLE_CXX11 "Enable C++11 support" OFF)
99
OPTION(ENABLE_OPENCL "Enable OpenCL support" ON)
10+
OPTION(ENABLE_OPENGL "Enable OpenGL support" ON)
1011

1112
IF(ENABLE_CXX11)
1213
INCLUDE(CheckCXXCompilerFlag)
@@ -48,14 +49,16 @@ INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIR})
4849
INCLUDE_DIRECTORIES("${MY_DIR}/../../depends/libusb/include/libusb-1.0/")
4950
LINK_DIRECTORIES("${MY_DIR}/../../depends/libusb/lib/")
5051

51-
# GLFW
52-
SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
53-
SET(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs")
54-
SET(GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs")
55-
SET(GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation")
52+
IF(ENABLE_OPENGL)
53+
# GLFW
54+
SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
55+
SET(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs")
56+
SET(GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs")
57+
SET(GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation")
5658

57-
ADD_SUBDIRECTORY(${MY_DIR}/../../depends/glfw_src/ ${MY_DIR}/../../depends/glfw)
58-
INCLUDE_DIRECTORIES(${MY_DIR}/../../depends/glfw_src/include/)
59+
ADD_SUBDIRECTORY(${MY_DIR}/../../depends/glfw_src/ ${MY_DIR}/../../depends/glfw)
60+
INCLUDE_DIRECTORIES(${MY_DIR}/../../depends/glfw_src/include/)
61+
ENDIF(ENABLE_OPENGL)
5962

6063
if(APPLE)
6164
# libjpeg-turbo
@@ -102,25 +105,28 @@ SET(RESOURCES
102105
zTable.bin
103106
)
104107

105-
# TODO: only append if building with opengl support
106-
LIST(APPEND SOURCES
107-
src/flextGL.c
108-
src/opengl_depth_packet_processor.cpp
109-
)
110108

111-
LIST(APPEND LIBRARIES
112-
glfw
113-
${GLFW_LIBRARIES}
114-
)
109+
IF(ENABLE_OPENGL)
110+
SET(LIBFREENECT2_WITH_OPENGL_SUPPORT 1)
111+
LIST(APPEND SOURCES
112+
src/flextGL.c
113+
src/opengl_depth_packet_processor.cpp
114+
)
115115

116-
LIST(APPEND RESOURCES
117-
src/shader/debug.fs
118-
src/shader/default.vs
119-
src/shader/filter1.fs
120-
src/shader/filter2.fs
121-
src/shader/stage1.fs
122-
src/shader/stage2.fs
123-
)
116+
LIST(APPEND LIBRARIES
117+
glfw
118+
${GLFW_LIBRARIES}
119+
)
120+
121+
LIST(APPEND RESOURCES
122+
src/shader/debug.fs
123+
src/shader/default.vs
124+
src/shader/filter1.fs
125+
src/shader/filter2.fs
126+
src/shader/stage1.fs
127+
src/shader/stage2.fs
128+
)
129+
ENDIF(ENABLE_OPENGL)
124130

125131
IF(ENABLE_OPENCL AND OPENCL_FOUND)
126132
SET(LIBFREENECT2_WITH_OPENCL_SUPPORT 1)
@@ -148,14 +154,6 @@ INCLUDE_DIRECTORIES("${MY_DIR}/include")
148154
ADD_DEFINITIONS(-DRESOURCES_INC)
149155
ADD_LIBRARY(freenect2 SHARED ${SOURCES})
150156
TARGET_LINK_LIBRARIES(freenect2 ${LIBRARIES})
151-
152-
ADD_EXECUTABLE(test_opengl
153-
src/test_opengl_depth_packet_processor.cpp
154-
)
155-
156-
TARGET_LINK_LIBRARIES(test_opengl
157-
freenect2
158-
)
159157

160158
ADD_EXECUTABLE(Protonect
161159
Protonect.cpp

examples/protonect/Protonect.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
#include <iostream>
2929
#include <signal.h>
3030

31-
#include <GLFW/glfw3.h>
32-
3331
#include <opencv2/opencv.hpp>
3432

3533
#include <libfreenect2/libfreenect2.hpp>
@@ -55,7 +53,6 @@ int main(int argc, char *argv[])
5553
binpath = program_path.substr(0, executable_name_idx);
5654
}
5755

58-
glfwInit();
5956

6057
libfreenect2::Freenect2 freenect2;
6158
libfreenect2::Freenect2Device *dev = freenect2.openDefaultDevice();

examples/protonect/include/libfreenect2/config.h.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
#define LIBFREENECT2_API
4040
#endif
4141

42+
#cmakedefine LIBFREENECT2_WITH_OPENGL_SUPPORT
43+
4244
#cmakedefine LIBFREENECT2_WITH_OPENCL_SUPPORT
4345

4446
#cmakedefine LIBFREENECT2_THREADING_STDLIB

examples/protonect/include/libfreenect2/depth_packet_processor.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ class LIBFREENECT2_API DepthPacketProcessor : public BaseDepthPacketProcessor
110110
libfreenect2::FrameListener *listener_;
111111
};
112112

113+
#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
113114
class OpenGLDepthPacketProcessorImpl;
114115

115116
class LIBFREENECT2_API OpenGLDepthPacketProcessor : public DepthPacketProcessor
@@ -137,6 +138,7 @@ class LIBFREENECT2_API OpenGLDepthPacketProcessor : public DepthPacketProcessor
137138
private:
138139
OpenGLDepthPacketProcessorImpl *impl_;
139140
};
141+
#endif // LIBFREENECT2_WITH_OPENGL_SUPPORT
140142

141143
// TODO: push this to some internal namespace
142144
// use pimpl to hide opencv dependency

examples/protonect/include/libfreenect2/packet_pipeline.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ class LIBFREENECT2_API CpuPacketPipeline : public BasePacketPipeline
8282
virtual ~CpuPacketPipeline();
8383
};
8484

85+
#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
8586
class LIBFREENECT2_API OpenGLPacketPipeline : public BasePacketPipeline
8687
{
8788
protected:
@@ -92,6 +93,7 @@ class LIBFREENECT2_API OpenGLPacketPipeline : public BasePacketPipeline
9293
OpenGLPacketPipeline(void *parent_opengl_context = 0, bool debug = false);
9394
virtual ~OpenGLPacketPipeline();
9495
};
96+
#endif // LIBFREENECT2_WITH_OPENGL_SUPPORT
9597

9698
#ifdef LIBFREENECT2_WITH_OPENCL_SUPPORT
9799
class LIBFREENECT2_API OpenCLPacketPipeline : public BasePacketPipeline
@@ -105,7 +107,6 @@ class LIBFREENECT2_API OpenCLPacketPipeline : public BasePacketPipeline
105107
};
106108
#endif // LIBFREENECT2_WITH_OPENCL_SUPPORT
107109

108-
typedef OpenGLPacketPipeline DefaultPacketPipeline;
109110

110111
} /* namespace libfreenect2 */
111112
#endif /* PACKET_PIPELINE_H_ */

examples/protonect/src/libfreenect2.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,19 @@ void Freenect2DeviceImpl::close()
600600
std::cout << "[Freenect2DeviceImpl] closed" << std::endl;
601601
}
602602

603+
PacketPipeline *createDefaultPacketPipeline()
604+
{
605+
#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
606+
return new OpenGLPacketPipeline();
607+
#else
608+
#ifdef LIBFREENECT2_WITH_OPENCL_SUPPORT
609+
return new OpenCLPacketPipeline();
610+
#else
611+
return new CpuPacketPipeline();
612+
#endif
613+
#endif
614+
}
615+
603616
Freenect2::Freenect2(void *usb_context) :
604617
impl_(new Freenect2Impl(usb_context))
605618
{
@@ -628,7 +641,7 @@ std::string Freenect2::getDefaultDeviceSerialNumber()
628641

629642
Freenect2Device *Freenect2::openDevice(int idx)
630643
{
631-
return openDevice(idx, new DefaultPacketPipeline());
644+
return openDevice(idx, createDefaultPacketPipeline());
632645
}
633646

634647
Freenect2Device *Freenect2::openDevice(int idx, const PacketPipeline *pipeline)
@@ -719,7 +732,7 @@ Freenect2Device *Freenect2::openDevice(int idx, const PacketPipeline *pipeline,
719732

720733
Freenect2Device *Freenect2::openDevice(const std::string &serial)
721734
{
722-
return openDevice(serial, new DefaultPacketPipeline());
735+
return openDevice(serial, createDefaultPacketPipeline());
723736
}
724737

725738
Freenect2Device *Freenect2::openDevice(const std::string &serial, const PacketPipeline *pipeline)

examples/protonect/src/packet_pipeline.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ DepthPacketProcessor *CpuPacketPipeline::createDepthPacketProcessor()
9696
return depth_processor;
9797
}
9898

99+
#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
99100
OpenGLPacketPipeline::OpenGLPacketPipeline(void *parent_opengl_context, bool debug) : parent_opengl_context_(parent_opengl_context), debug_(debug)
100101
{
101102
initialize();
@@ -112,6 +113,7 @@ DepthPacketProcessor *OpenGLPacketPipeline::createDepthPacketProcessor()
112113

113114
return depth_processor;
114115
}
116+
#endif // LIBFREENECT2_WITH_OPENGL_SUPPORT
115117

116118

117119
#ifdef LIBFREENECT2_WITH_OPENCL_SUPPORT

0 commit comments

Comments
 (0)