Инициализация GLAD для нескольких dll, использующих GLADC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Инициализация GLAD для нескольких dll, использующих GLAD

Сообщение Anonymous »

Сейчас я создаю простое 3D-пространство, используя glfw и Glad. Мой подход к управлению проектами состоит в том, чтобы разделить его на более мелкие проекты, например:
  • Core
  • Renderer
  • Сцена
  • Окно
  • ExternalGraphicsLibs
ExternalGraphicsLibs имеет каталоги glfw, Glad и glm. какой источник взят непосредственно из github (я создал только один файл cmakelists, чтобы сделать его .dll из этого проекта). И Renderer, и Scene используют функцию Glad (они не видят функциональность GLFW), а Window видит только GLFW (отсутствие видимости GLAD).
Проблема, с которой я столкнулся, заключается в том, что и Renderer, и Scene нуждаются в инициализации Glad, и если я инициализирую Glad только в рендерере, сцена не увидит его, поэтому мне нужно выполнить повторную инициализацию. там тоже это. На мой взгляд, это не лучший подход, потому что обе библиотеки будут иметь два разных указателя на функцию Glad, которые, по сути, будут делать одно и то же.
Знаете ли вы какое-нибудь решение этой проблемы? ? Как решить эту проблему или просто оставить это так, чтобы каждая dll, использующая Glad, имела собственную инициализацию?
Мой cmake для ExternalGraphicalLibs:
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}
)


Подробнее здесь: https://stackoverflow.com/questions/793 ... t-use-glad
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Инициализация GLAD для нескольких dll, использующих GLAD
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как включить в несколько заголовочных файлов на C++?
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Фатальная ошибка: Glad/glad.h: такого файла или каталога нет (каталог существует).
    Anonymous » » в форуме C++
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • : такого файла или каталога нет.
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Opengl "нет такого файла или каталога" Glad/Glad.h [Duplicate]
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»