如何在nvidia驱动程序中使用opengl?

时间:2019-04-09 05:52:40

标签: c++ linux opengl

我需要在代码中使用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是否有用,或者我应该安装无头驱动程序吗? (如何)我可以使用安装在nvidia中的opengl?谢谢。

1 个答案:

答案 0 :(得分:1)

首要:不要弄乱软件包管理器或NVidia驱动程序安装程序在系统上安装的任何符号链接或库! 如果这样做,最好将其返回给说你发现了东西。

因此缺少的是OpenGL头文件,而不是库文件。那些使用(d)随NVidia驱动程序安装程序一起提供,但是如果您使用系统软件包管理器,它们将被拆分为另一个软件包。

从技术上讲,您可以将标头从OpenGL注册表复制到您的项目中。但是通常人们会安装附带标头的默认系统软件包。

如果是Debian和Ubuntu,则为mesa-common-dev软件包。没关系,它是Mesa程序包,标题(功能上)相同。