Skip to content
Snippets Groups Projects
Commit 6cbac12e authored by Ansgar Philippsen's avatar Ansgar Philippsen
Browse files

fixes to allow compilation against Mesa rendering lib instead of system GL

parent 8104b689
No related branches found
No related tags found
No related merge requests found
......@@ -33,6 +33,8 @@ option(ENABLE_GUI "whether the graphical user interface should be enabled"
ON)
option(ENABLE_GFX "whether graphics support should be enabled"
ON)
option(USE_MESA "use software rendered Mesa instead of hardware GL"
OFF)
option(ENABLE_IMG "whether the image processing module should be compiled"
ON)
option(ENABLE_INFO "whether openstructure should be compiled with support for the info library"
......@@ -187,7 +189,13 @@ if (ENABLE_INFO)
endif()
if (ENABLE_GFX)
if(USE_MESA)
find_package(Mesa REQUIRED)
set(_USE_MESA ON)
else()
find_package(OpenGL REQUIRED)
set(_USE_MESA OFF)
endif()
endif()
if (ENABLE_IMG OR ENABLE_GFX)
......@@ -283,6 +291,7 @@ message(STATUS
" Info support (-DENABLE_INFO) : ${_INFO}\n"
" Graphical interface (-DENABLE_GUI) : ${_UI}\n"
" OpenGL support (-DENABLE_GFX) : ${_OPENGL}\n"
" OpenGL via Mesa (-DUSE_MESA) : ${_USE_MESA}\n"
" Image Processing support (-DENABLE_IMG) : ${_IMG}\n"
" Shader support (-DUSE_SHADER) : ${_SHADER}\n"
" Numpy support (-DUSE_NUMPY) : ${_NUMPY}\n"
......
......
......@@ -16,6 +16,12 @@ else()
set(shader_support 0)
endif()
if (USE_MESA)
set(mesa_support 1)
else()
set(mesa_support 0)
endif()
if (USE_NUMPY)
set(numpy_support 1)
else()
......
......
......@@ -24,6 +24,7 @@
*/
#define OST_SHADER_SUPPORT_ENABLED @shader_support@
#define OST_MESA_SUPPORT_ENABLED @mesa_support@
#define OST_PROFILING_ENABLED @profiling_enabled@
#define OST_ANIMATIONS_ENABLED @animations_enabled@
#define OST_IMG_ENABLED @img_enabled@
......
......
......@@ -180,9 +180,14 @@ else()
endif()
if (UNIX AND NOT APPLE)
if(USE_MESA)
list(APPEND OST_GFX_SOURCES impl/mesa_offscreen_buffer.cc)
list(APPEND OST_GFX_IMPL_HEADERS mesa_offscreen_buffer.hh)
else()
list(APPEND OST_GFX_SOURCES impl/glx_offscreen_buffer.cc)
list(APPEND OST_GFX_IMPL_HEADERS glx_offscreen_buffer.hh)
endif()
endif()
if (APPLE)
list(APPEND OST_GFX_SOURCES impl/cgl_offscreen_buffer.cc)
......@@ -200,6 +205,7 @@ if (USE_SHADER)
list(APPEND OST_GFX_SOURCES impl/scene_fx.cc)
list(APPEND OST_GFX_IMPL_HEADERS scene_fx.hh)
if (NOT APPLE)
if (NOT USE_MESA)
set(OST_GLEW_HEADERS
glew.h
glxew.h
......@@ -209,6 +215,7 @@ if (USE_SHADER)
include_directories("${STAGE_DIR}/include/ost/gfx")
endif()
endif()
endif()
set(OST_GFX_DEPENDENCIES "ost_conop;ost_seq")
if (ENABLE_IMG)
......@@ -226,6 +233,9 @@ module(NAME gfx SOURCES ${OST_GFX_SOURCES} ${OST_GFX_MAP_SOURCES}
include_directories(${PNG_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
# link against OpenGL and PNG libraries
if(USE_MESA)
link_directories(${OPENGL_LIBRARY_DIR})
endif()
target_link_libraries(ost_gfx ${OPENGL_LIBRARIES} ${PNG_LIBRARIES})
if (USE_SHADER)
......
......
......@@ -29,6 +29,12 @@
#include <ost/config.hh>
#if OST_SHADER_SUPPORT_ENABLED
#ifdef OST_MESA_SUPPORT_ENABLED
# define OST_GL_VERSION_2_0 1
# define GL_GLEXT_PROTOTYPES 1
# include <GL/gl.h>
# include <GL/glext.h>
#else
# if OST_MODULE==OST_GFX
# define GLEW_BUILD
# endif
......@@ -39,6 +45,7 @@
# include <ost/gfx/GL/wglew.h>
# endif
#endif
#endif
#include <ost/gfx/gl_include.hh>
......@@ -53,3 +60,4 @@
#endif
#endif
#endif
......@@ -59,7 +59,11 @@ public:
*/
#if defined(__linux__)
#if OST_MESA_SUPPORT_ENABLED
#include "impl/mesa_offscreen_buffer.hh"
#else
#include "impl/glx_offscreen_buffer.hh"
#endif
#elif defined(__APPLE__)
#include "impl/cgl_offscreen_buffer.hh"
#elif defined(_MSC_VER)
......
......
......@@ -59,12 +59,14 @@ Shader::Shader():
void Shader::PreGLInit()
{
#if !defined(__APPLE__)
#if !defined(OST_MESA_SUPPORT_ENABLED)
GLenum err = glewInit();
if (GLEW_OK != err) {
LOG_ERROR("glew failure: " << glewGetErrorString(err));
assert(false);
}
#endif
#endif
}
bool Shader::Compile(std::string shader_name, std::string shader_code,
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment