MultiInteract Eq1.6 DynaFrustumModule branch
Added files
Terrain3D_gl/Modules/DynaFrustum/DynaFrustumModule.h
Terrain3D_gl/Modules/DynaFrustum/DynaFrustumModule.cpp
dynaFru_frave4-90in-stereo.eqc
Changes
- Eq1.6 integration
- initFrame() addition in Module system
- forward declarations in headers
- DynaFrustum Module
- Switch to EQ-internal GLEW_MX on Windows
Equalizer 1.6 API changes
-
eq/*.h
header files are moved to eq/client
- at least some
co/base/*.h
header files are moved to lunchbox/
and eq/fabric
(clock.h
to Lunchbox, errorRegistry.h
and global.h
to eqFabric)
-
eq/fabric/serializable.h
is now co/serializable.h
-
eq/wglWindow.h
is eq/client/wgl/window.h
, eq/glXWindow.h
is eq/client/glx/window.h
, eq/client/glXTypes.h
added
- classes
eq::WGLWindow
and eq::GLXWindow
were moved to the according new namespaces eq::wgl::Window
, eq::glx::Window
Module system changes
-
Terrain3D_gl/equalizer/node.cpp
:
- initNode()
method in ModuleHandler
overloaded with new initNode(eqTerrain3D::Config config)
, both are called in sequence
-
Terrain3D_gl/equalizer/config.cpp
:
- initMasterNode()
method in ModuleHandler
overloaded with new initMasterNode(eqTerrain3D::Config config)
, both are called in sequence
-
Terrain3D_gl/equalizer/config.cpp
:
- new initFrame(eqTerrain3D::Config config)
method, called in eqTerrain3D::startFrame()
(this new method is executed before each frame for each module)
-
ModuleHandler
class header is no longer included in other headers, a forward-declaration is used instead.
Especially the class headers for Config
, FrameData
, Camera
, ModuleHandler
were made to not include each other.
DynaFrustumModule
requires
TrackingModule and
NavigationModule, exports keys "F" for toggling frusta updates and "8" for stereo mode.
GLEW_MX usage
Linux version uses dynamically linked GLEW_MX, normally installed systemwide.
Windows version, however, relies on a statically linked to Terrain GLEW_MX library.
An #ifdef for OS-specific includes has to be added in
terrainLib
files and some of the Eq class derivations.
Changed files
Terrain3D_gl/Modules/ModuleHandler.h
Terrain3D_gl/Modules/ModuleHandler.cpp
Terrain3D_gl/Modules/Module.h
Terrain3D_gl/equalizer/application.h
Terrain3D_gl/equalizer/application.cpp
Terrain3D_gl/equalizer/channel.h
Terrain3D_gl/equalizer/channel.cpp
Terrain3D_gl/equalizer/config.h
Terrain3D_gl/equalizer/config.cpp
Terrain3D_gl/equalizer/error.h
Terrain3D_gl/equalizer/error_co.cpp
Terrain3D_gl/equalizer/event.h
Terrain3D_gl/equalizer/frameData.h
Terrain3D_gl/equalizer/frameData.cpp
Terrain3D_gl/equalizer/initData.h
Terrain3D_gl/equalizer/node.h
Terrain3D_gl/equalizer/node.cpp
Terrain3D_gl/equalizer/pipe.h
Terrain3D_gl/equalizer/tracker.h
Terrain3D_gl/equalizer/tracker.cpp
Terrain3D_gl/equalizer/view.h
Terrain3D_gl/equalizer/window.h
Terrain3D_gl/equalizer/window.cpp
Terrain3D_gl/Terrain3Dgl.cpp
Terrain3D_gl/terrainLib/glew/GL/glew.c
Terrain3D_gl/terrainLib/glew/GL/glew.h
Terrain3D_gl/terrainLib/gltools/buffer.h
Terrain3D_gl/terrainLib/gltools/helper.h
Terrain3D_gl/terrainLib/gltools/device.h
Terrain3D_gl/terrainLib/gltools/texture.h
Terrain3D_gl/terrainLib/gltools/effect.h
Terrain3D_gl/terrainLib/gltools/error.h
Terrain3D_gl/terrainLib/gltools/uniform.h
Terrain3D_gl/terrainLib/resourcepool.h
Terrain3D_gl/overviewmap.h
Troubleshooting
When you build Equalizer
If linker fails with unresolved symbols, for example "boost::re_detail::perl_matcher", you might want to add the library containing the symbol,
in the example case it is
libboost_regex-mt.so
To search for symbols in libraries, use
nm -gD | grep "your.symbol"
To add libsomename.so
to the linker command as a -lsomename
flag, add somename
to the libraries list in CMakeLists.txt
in a projects folder.
Example: in
Buildyard/src/Lunchbox/lunchbox/CMakeLists.txt
append to the list like this -
set(LUNCHBOX_LINKLIBS ${PTHREAD_LIBRARIES} ${Boost_LIBRARIES} boost_regex-mt)
(appending to auto-generated Boost_LIBRARIES could work as well)
Terrain3D requires GLEW_MX libraries and GLEW_MX support in Equalizer, even if compiler/linker don't require them at build time - otherwise each frame triggers an initialization
that fails due to missing GLEW context. When using
apt-get
, make sure that you do not have any
libglew*
packages installed before pulling
libglewmx1.6-dev
(or newer version) ONLY, otherwise CMake can build without external GLEW_MX support (GLEW_MX statically built in Eq doesn't work with Terrain3D) .
When you build Terrain3D
If linker fails with unresolved symbols like
lunchbox::byteswap(&T)
,
either define a symbol
CO_IGNORE_BYTESWAP
if you don't care about the possibility of mixed endianness in communication,
or implement in templates the missing byteswap procedures for the types that need it.
If you see error messages like "GL_EXT_texture_compression_s3tc unsupported" that may be not actually true,
for example if glewGetContext fails, then instead of context, NULL gets passed across many calls undetected.