如何在nvidia驱动程序下使用opengl?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在nvidia驱动程序下使用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信息:
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吗?谢谢。
首先:不要破坏软件包管理器或NVidia驱动程序安装程序在系统上安装的任何符号链接或库!如果你这样做了,你最好把它恢复到你发现的状态。
所以缺少的是OpenGL头文件,而不是库。那些使用(d)与NVidia驱动程序安装程序一起使用,但是如果您使用系统包管理器,它们将被拆分为不同的包。
从技术上讲,您可以将标题从OpenGL注册表复制到项目中。但通常人们会安装提供标头的默认系统包。
如果Debian和Ubuntu是mesa-common-dev
包。别介意它是Mesa包,标题是相同的(功能上)。
以上是关于如何在nvidia驱动程序下使用opengl?的主要内容,如果未能解决你的问题,请参考以下文章
如何查找 NVIDIA OpenGL 驱动程序的错误 ID 名称?
OpenGL:glVertexAttribPointer() 在新的 NVIDIA 驱动程序上因步幅大于 2048 而出现“无效值”失败
在 Java/OpenGL 下激活 nVIDIA Optimus?
Nvidia GeForce GTX 1650不支持OpenGL4.6