GLAD-Initialisierung für mehrere DLLs, die GLAD verwendenC++

Programme in C++. Entwicklerforum
Guest
 GLAD-Initialisierung für mehrere DLLs, die GLAD verwenden

Post by Guest »

Im Moment erstelle ich einen einfachen 3D-Raum mit glfw und froh. Mein Ansatz für das Projektmanagement besteht darin, es in kleinere Projekte zu unterteilen, wie zum Beispiel:
  • Core
  • Renderer
  • Szene
  • Fenster
  • ExternalGraphicsLibs
ExternalGraphicsLibs hat glfw-, froh- und glm-Verzeichnisse, deren Quelle ist direkt von Github (ich habe nur eine einzige cmakelists-Datei erstellt, um daraus eine DLL aus diesem Projekt zu machen). Renderer und Scene verwenden beide Glad-Funktionalität (sie sehen keine GLFW-Funktionalität) und Window sieht nur GLFW (keine GLAD-Sichtbarkeit).
Das Problem, mit dem ich konfrontiert bin, ist, dass sowohl Renderer als auch Szene mit Glad initialisiert werden müssen. Wenn ich Glad nur im Renderer initialisiere, wird es in der Szene nicht angezeigt, sodass ich es neu initialisieren muss es gibt es auch. Meiner Meinung nach ist dies nicht der beste Ansatz, da beide Bibliotheken zwei unterschiedliche Funktionszeiger auf Glad haben, die im Grunde das Gleiche tun.
Wissen Sie, wie Sie dieses Problem lösen können? ? Wie kann man dieses Problem lösen oder es einfach so belassen, dass jede DLL, die Glad verwendet, ihre eigene Initialisierung hätte?
Mein cmake für ExternalGraphicalLibs:

Code: Select all

cmake_minimum_required(VERSION 3.24.0)
project(ExternalGraphicsLibs)

set(CMAKE_BUILD_PARALLEL_LEVEL)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Find and configure OpenGL
find_package(OpenGL REQUIRED)

# GLFW options
set(GLFW_BUILD_DOCS OFF CACHE BOOL "Disable GLFW docs" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "Disable GLFW tests" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Disable GLFW examples" FORCE)
set(GLFW_INSTALL OFF CACHE BOOL "Disable GLFW install" FORCE)

# Add GLFW source code
add_subdirectory(glfw)

# Add GLAD source code
add_library(${PROJECT_NAME}
STATIC
${CMAKE_CURRENT_SOURCE_DIR}/glad/src/gl.c
)

target_include_directories(${PROJECT_NAME}
PUBLIC
glfw/include
glad/include
glm/
${OPENGL_INCLUDE_DIRS}
)

target_link_libraries(${PROJECT_NAME}
PUBLIC
glfw
${OPENGL_LIBRARIES}
)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post