Как использовать OpenGL с драйверами NVIDIA? - PullRequest
1 голос
/ 09 апреля 2019

Мне нужно использовать OpenGL в моем коде. Я использую CMake для поиска opengl в моей системе следующим образом:

find_package(OpenGL REQUIRED)

Возвращает эту ошибку:

CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_glx_LIBRARY
  OPENGL_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.10/Modules/FindOpenGL.cmake:369 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:8 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/kapil/Documents/OpenGLZero/build/CMakeFiles/CMakeOutput.log".

Я установил nvidia-drivers-418 (не безголовые). Здесь показана вся информация об opengl: Opengl info in nvidia X Server

В драйвере Nvidia есть пакет libnvidia-gl-418, и мне кажется, что он должен предоставить мне возможности opengl. Вот вывод dpkg -l libnvidia-gl-418:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                               Version                Architecture           Description
+++-==================================-======================-======================-==========================================================================
ii  libnvidia-gl-418:amd64             418.56-0ubuntu0~gpu18. amd64                  NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii  libnvidia-gl-418:i386              418.56-0ubuntu0~gpu18. i386                   NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD

и dpkg -L libnvidia-gl-418:

/usr/lib/x86_64-linux-gnu/libEGL_nvidia.so.418.56
/usr/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.418.56
/usr/lib/x86_64-linux-gnu/libGLESv2_nvidia.so.418.56
/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.418.56
/usr/lib/x86_64-linux-gnu/libnvidia-cbl.so.418.56
/usr/lib/x86_64-linux-gnu/libnvidia-eglcore.so.418.56
/usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.418.56
/usr/lib/x86_64-linux-gnu/libnvidia-glsi.so.418.56
/usr/lib/x86_64-linux-gnu/libnvidia-glvkspirv.so.418.56
/usr/lib/x86_64-linux-gnu/libnvidia-rtcore.so.418.56
/usr/lib/x86_64-linux-gnu/libnvidia-tls.so.418.56
/usr/lib/x86_64-linux-gnu/libnvoptix.so.418.56
/usr/lib/x86_64-linux-gnu/nvidia-418
/usr/lib/x86_64-linux-gnu/nvidia-418/xorg
/usr/lib/x86_64-linux-gnu/nvidia-418/xorg/libglxserver_nvidia.so.418.56
/usr/share
/usr/share/doc
/usr/share/doc/libnvidia-gl-418
/usr/share/doc/libnvidia-gl-418/changelog.Debian.gz
/usr/share/doc/libnvidia-gl-418/copyright
/usr/share/glvnd
/usr/share/glvnd/egl_vendor.d
/usr/share/glvnd/egl_vendor.d/10_nvidia.json
/usr/share/vulkan
/usr/share/vulkan/icd.d
/usr/share/vulkan/icd.d/nvidia_icd.json
/usr/lib/x86_64-linux-gnu/libEGL_nvidia.so.0
/usr/lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.1
/usr/lib/x86_64-linux-gnu/libGLESv2_nvidia.so.2
/usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0
/usr/lib/x86_64-linux-gnu/libnvoptix.so.1
/usr/lib/x86_64-linux-gnu/nvidia-418/xorg/libglxserver_nvidia.so

В прошлый раз мне пришлось установить mesa-utils (для glxinfo) и libgl1-mesa-dev, чтобы использовать opengl. Я хочу знать, используются ли драйверы nvidia для opengl, или я должен был вместо этого установить безголовые драйверы? (Как) Могу ли я использовать opengl, установленный в nvidia? Спасибо.

1 Ответ

1 голос
/ 09 апреля 2019

В первую очередь: Не связывайтесь с какими-либо символическими ссылками или библиотеками, установленными в вашей системе менеджером пакетов или установщиком драйвера NVidia! Если вы это сделали, лучше вернуть его в состояниевы нашли вещи.

Итак, чего не хватает, так это заголовков OpenGL, , а не библиотек .Они используют (d) для установки драйвера NVidia, но если вы используете менеджер пакетов вашей системы, они будут разбиты на другой пакет.

Технически вы можете просто скопировать заголовки из реестра OpenGL в свойпроект.Но обычно люди идут с установкой системного пакета по умолчанию, который доставляет заголовки.

В случае Debian и Ubuntu это будет пакет mesa-common-dev.Не берите в голову, что это пакет Mesa, заголовки одинаковы (функционально).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...