mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-14 00:52:04 +00:00
- Add configurable GLEW_USE_EGL option (default OFF) to match wxWidgets - Explicitly set wxUSE_GLCANVAS_EGL=OFF for vendored wxWidgets build - Add compile-time check to detect EGL/GLX backend mismatch between GLEW and wxWidgets, preventing silent rendering failures The bug occurred when GLEW was compiled with EGL support (using eglGetProcAddress) but wxWidgets created GLX contexts. This mismatch caused OpenGL function pointers to fail loading, resulting in blank 3D model preview. Co-authored-by: SoftFever <softfeverever@gmail.com>
44 lines
1.3 KiB
CMake
44 lines
1.3 KiB
CMake
cmake_minimum_required(VERSION 3.0)
|
|
project(GLEW)
|
|
|
|
find_package(OpenGL REQUIRED)
|
|
|
|
# Allow parent project to control EGL usage.
|
|
# Default to OFF since OrcaSlicer forces GDK_BACKEND=x11 (using GLX contexts).
|
|
# GLEW must use glXGetProcAddressARB (GLX) to match wxWidgets GL canvas.
|
|
# Using EGL function loading with GLX contexts causes rendering failures.
|
|
option(GLEW_USE_EGL "Use EGL instead of GLX for OpenGL function loading" OFF)
|
|
|
|
if(GLEW_USE_EGL)
|
|
message(STATUS "Building GLEW with EGL support")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGLEW_EGL")
|
|
else()
|
|
message(STATUS "Building GLEW with GLX support")
|
|
endif()
|
|
|
|
add_library(GLEW src/glew.c)
|
|
target_include_directories(GLEW PRIVATE include/)
|
|
target_link_libraries(GLEW PUBLIC OpenGL::GL)
|
|
|
|
if (NOT BUILD_SHARED_LIBS)
|
|
target_compile_definitions(GLEW PUBLIC GLEW_STATIC)
|
|
endif ()
|
|
|
|
include(GNUInstallDirs)
|
|
|
|
install(
|
|
FILES
|
|
${PROJECT_SOURCE_DIR}/include/GL/glew.h
|
|
${PROJECT_SOURCE_DIR}/include/GL/wglew.h
|
|
${PROJECT_SOURCE_DIR}/include/GL/glxew.h
|
|
${PROJECT_SOURCE_DIR}/include/GL/eglew.h
|
|
DESTINATION
|
|
${CMAKE_INSTALL_INCLUDEDIR}/GL
|
|
)
|
|
|
|
install(TARGETS GLEW GLEW
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
) |