简体   繁体   English

如何将 opengl 与 nvidia 驱动程序一起使用?

[英]how to use opengl with nvidia drivers?

I need to use OpenGL in my code.我需要在我的代码中使用 OpenGL。 I am using CMake in order to search opengl in my system like this :我正在使用 CMake 以便在我的系统中搜索 opengl,如下所示:

find_package(OpenGL REQUIRED)

It returns this error :它返回此错误:

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".

I have installed nvidia-drivers-418 (not the headless ones).我已经安装了 nvidia-drivers-418(不是无头的)。 It shows all the opengl information here:它在这里显示了所有的 opengl 信息: nvidia X Server 中的 Opengl 信息

Nvidia driver has libnvidia-gl-418 package in it, and to me it seems it should provide me with the opengl capabilities. Nvidia 驱动程序中有libnvidia-gl-418包,在我看来它应该为我提供 opengl 功能。 Here is the output of dpkg -l libnvidia-gl-418 :这是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

and dpkg -L libnvidia-gl-418 :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

Last time, I had to install mesa-utils (for glxinfo) and libgl1-mesa-dev to use opengl.上次,我必须安装mesa-utils (用于 glxinfo)和libgl1-mesa-dev才能使用 opengl。 I want to know if nvidia drivers are of any use for opengl or I should have installed headless drivers instead?我想知道 nvidia 驱动程序是否对 opengl 有用,还是我应该安装无头驱动程序? (How) Can I use opengl installed in nvidia? (如何)我可以使用安装在 nvidia 中的 opengl 吗? Thank you.谢谢你。

First and foremost: Don't mess with any symlinks or libraries installed on your system by the package manager or the NVidia driver installer!首先也是最重要的:不要弄乱包管理器或 NVidia 驱动程序安装程序在系统上安装的任何符号链接或库! If you did, you better return it to the state you found things.如果你这样做了,你最好把它恢复到你找到东西的状态。

So what's missing are the OpenGL headers, not the libraries .所以缺少的是 OpenGL 头文件,而不是库 Those use(d) to come with the NVidia driver installer, but if you use your systems package manager, they will be split into a different package.那些使用 (d) 随 NVidia 驱动程序安装程序一起提供,但如果您使用系统包管理器,它们将被拆分为不同的包。

Technically you could just copy the headers from the OpenGL registry into your project.从技术上讲,您可以将 OpenGL 注册表中的标头复制到您的项目中。 But usually folks go with installing the default system package that ships the headers.但是通常人们会安装带有标头的默认系统包。

In case of Debian and Ubuntu that'd be the mesa-common-dev package.如果是 Debian 和 Ubuntu,那就是mesa-common-dev包。 Never mind that it's the Mesa package, the headers are the same (functionally).别介意它是 Mesa 包,标题是相同的(功能上)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM