【问题标题】:How to get OpenGL-3 headers(C/C++) in linux (with nvidia driver)如何在 linux 中获取 OpenGL-3 头文件(C/C++)(使用 nvidia 驱动程序)
【发布时间】:2013-10-26 11:08:52
【问题描述】:

我的 SO 是 OpenSuse 版本 12.2 (x86_64) Mantis,带有 KDE 桌面。 我目前从存储库安装了 NVidia 驱动程序 (319)。 3D加速工作,驱动似乎支持OpenGL 4.3。

我正在尝试编写一个简单的 OpenGL 示例(只是 glut 窗口中的一个三角形),但我不能,因为 GL/gl.h 已过时:当前标头是带有 openGL 1.3 的台面,它不支持 glCreateShader , glAttachShader...

我已经尝试过 $ sudo find / -name gl3.h(openGL 3.1 和进一步应该包含这个头文件)但它没有返回任何结果,所以我认为 Nvidia 驱动程序不包含库/头文件。

我的问题是:我在哪里可以获得已安装的 NVidia 驱动程序的 GL/gl.h?有谁遇到过同样的问题并解决了吗?

附: 为了安装 NVidia 驱动程序,我刚刚从 NVidia 存储库中安装了用于 opensuse 12.2 (http://download.nvidia.com/opensuse/12.2/) 的驱动程序(使用 Yast)

我已经安装了:

  • nvidia-computeG03(使用 GPGPU 进行计算的 NVIDIA 驱动程序)
  • nvidia-gfxG03-kmp-desktop(适用于 GForce 8xxx 和更新 GPU 的 NVIDIA 图形驱动程序内核模块)
  • x11-video-nvidiaG03(适用于 GeForce 8xxx 和更新的 GPUx 的 NVIDIA 显卡驱动程序)

【问题讨论】:

    标签: opengl header-files nvidia opengl-3 opensuse


    【解决方案1】:

    访问新功能的正确方法是通过 GL 扩展机制。你可以使用 mesa 的GL.h。您需要的是glext.h 的当前版本(它确实与 nivida 驱动程序 iirc 一起提供,但也可以在 the official opengl site 上找到)。然后,您必须在您的平台上通过glXGetProcAddress() 查询您计划调用的任何函数的函数指针。

    更方便的方法是使用OpenGL loader library 之类的glew,它将为您完成所有这些工作。

    请注意,理论上您可以在包含glext.h 之前使用#define GL_GLEXT_PROTOTYPES 并直接调用这些函数。这可能适用于 nvidia 驱动程序(以及您平台上的其他一些驱动程序),但不能保证任何规范都能正常工作。而且它永远无法在 Windows 等其他平台上运行。

    【讨论】:

    • 谢谢你,我离解决方案 O.O 很远
    猜你喜欢
    • 2019-08-30
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多