Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
build
CMakeUserPresets.json
.vs
16 changes: 13 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,6 @@ if(NOT OpenGL_GL_PREFERENCE)
set(OpenGL_GL_PREFERENCE "LEGACY")
endif()

find_package(OpenGL REQUIRED)

include(GNUInstallDirs)

# Define ImGui-SFML
Expand All @@ -72,7 +70,19 @@ target_include_directories(ImGui-SFML PUBLIC
target_include_directories(ImGui-SFML SYSTEM PUBLIC
$<BUILD_INTERFACE:${IMGUI_INCLUDE_DIR}>
)
target_link_libraries(ImGui-SFML PUBLIC SFML::Graphics OpenGL::GL)

if(IOS)
target_link_libraries(ImGui-SFML PRIVATE "-framework OpenGLES")
elseif(ANDROID)
find_package(EGL REQUIRED)
find_package(GLES REQUIRED)
target_link_libraries(ImGui-SFML PRIVATE EGL::EGL GLES::GLES)
else()
find_package(OpenGL REQUIRED COMPONENTS OpenGL)
target_link_libraries(ImGui-SFML PRIVATE OpenGL::GL)
endif()

target_link_libraries(ImGui-SFML PUBLIC SFML::Graphics)
if(WIN32 AND MINGW)
target_link_libraries(ImGui-SFML PUBLIC imm32)
endif()
Expand Down
19 changes: 19 additions & 0 deletions cmake/FindEGL.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#
# Try to find EGL library and include path.
# Once done this will define
#
# EGL_FOUND
# EGL_INCLUDE_PATH
# EGL_LIBRARY
#

find_path(EGL_INCLUDE_DIR EGL/egl.h)
find_library(EGL_LIBRARY NAMES EGL)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(EGL DEFAULT_MSG EGL_LIBRARY EGL_INCLUDE_DIR)

add_library(EGL::EGL IMPORTED UNKNOWN)
set_target_properties(EGL::EGL PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${EGL_INCLUDE_DIR}
IMPORTED_LOCATION ${EGL_LIBRARY})
19 changes: 19 additions & 0 deletions cmake/FindGLES.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#
# Try to find GLES library and include path.
# Once done this will define
#
# GLES_FOUND
# GLES_INCLUDE_PATH
# GLES_LIBRARY
#

find_path(GLES_INCLUDE_DIR GLES/gl.h)
find_library(GLES_LIBRARY NAMES GLESv1_CM)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GLES DEFAULT_MSG GLES_LIBRARY GLES_INCLUDE_DIR)

add_library(GLES::GLES IMPORTED UNKNOWN)
set_target_properties(GLES::GLES PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${GLES_INCLUDE_DIR}
IMPORTED_LOCATION ${GLES_LIBRARY})
9 changes: 8 additions & 1 deletion cmake/FindImGui.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,19 @@ list(APPEND IMGUI_SEARCH_PATH
${IMGUI_DIR}
)


unset(IMGUI_INCLUDE_DIR)

find_path(IMGUI_INCLUDE_DIR
NAMES imgui.h
PATHS ${IMGUI_SEARCH_PATH}
HINTS ${IMGUI_SEARCH_PATH}
NO_DEFAULT_PATH
NO_CMAKE_FIND_ROOT_PATH
)

file(GLOB MY_FILES "${IMGUI_DIR}/imgui.h")

message(WARNING "Found: ${IMGUI_DIR} ${IMGUI_SEARCH_PATH} ${IMGUI_INCLUDE_DIR} ${MY_FILES}")
if(NOT IMGUI_INCLUDE_DIR)
message(FATAL_ERROR "IMGUI imgui.cpp not found. Set IMGUI_DIR to imgui's top-level path (containing \"imgui.cpp\" and \"imgui.h\" files).\n")
endif()
Expand Down
10 changes: 10 additions & 0 deletions imgui-SFML.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -911,7 +911,9 @@ void SetupRenderState(ImDrawData* draw_data, int fb_width, int fb_height)
glEnableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glEnable(GL_TEXTURE_2D);
#ifndef GL_VERSION_ES_CL_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
#endif
glShadeModel(GL_SMOOTH);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

Expand Down Expand Up @@ -967,8 +969,12 @@ void RenderDrawLists(ImDrawData* draw_data)
// Backup GL state
GLint last_texture = 0;
glGetIntegerv(GL_TEXTURE_BINDING_2D, &last_texture);

#ifndef GL_VERSION_ES_CL_1_1
GLint last_polygon_mode[2];
glGetIntegerv(GL_POLYGON_MODE, last_polygon_mode);
#endif

GLint last_viewport[4];
glGetIntegerv(GL_VIEWPORT, last_viewport);
GLint last_scissor_box[4];
Expand Down Expand Up @@ -1060,9 +1066,13 @@ void RenderDrawLists(ImDrawData* draw_data)
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();

#ifndef GL_VERSION_ES_CL_1_1
glPopAttrib();
glPolygonMode(GL_FRONT, (GLenum)last_polygon_mode[0]);
glPolygonMode(GL_BACK, (GLenum)last_polygon_mode[1]);
#endif

glViewport(last_viewport[0], last_viewport[1], (GLsizei)last_viewport[2], (GLsizei)last_viewport[3]);
glScissor(last_scissor_box[0], last_scissor_box[1], (GLsizei)last_scissor_box[2], (GLsizei)last_scissor_box[3]);
glShadeModel((GLenum)last_shade_model);
Expand Down
Loading