【问题标题】:glGenBuffers not defined?glGenBuffers 没有定义?
【发布时间】:2011-03-03 05:19:36
【问题描述】:

我正在使用 Windows,我注意到很多函数都是灰色的,因为我猜 #ifdef GL_GLEXT_PROTOTYPES 没有定义。其中之一是 VBO 扩展。我应该只定义 GL_GLEXT_PROTOTYPES 吗?否则我怎么能使用 VBO,因为我使用的是 OpenGL32.dll(我希望我的应用程序没有默认情况下不包含在 Windows 中的 dll 依赖项。)谢谢

【问题讨论】:

    标签: c++ c opengl


    【解决方案1】:

    是的,这很正常,预计会有类似的情况:

    #define GL_GLEXT_PROTOTYPES
    
    #include <GL/GL.h>
    

    如果您尝试编写符合 OpenGL 3 的代码,您通常会将其更改为:

    #define GL_GLEXT_PROTOTYPES 1
    #define GL3_PROTOTYPES 1
    
    #include <GL3/GL3.h>
    

    【讨论】:

    • 现在我得到链接器错误,除了 opengl32 我还需要包含任何库吗?
    • 谢谢。我更喜欢这个而不是 GLEW 方法。出于某种原因,GLEW 从来不适合我(Linux,台面)。它往往会导致随机段错误。
    【解决方案2】:

    我建议您使用 GLEW 来解决这个问题。

    说来话长,但要继续说,Windows 的 OpenGL 库仅公开 OpenGL 1.1 入口点,因此该版本以外的所有函数都使用 wglGetProcAddress 加载。 GLEW 通过这样做解决了这个问题。

    http://glew.sourceforge.net/

    只需链接到 GLEW 和 GLU/GLUT(如果您使用它们)。

    【讨论】:

    • 这需要在所有教程网站上更显着地指定!我避免使用 GLEW 以减少依赖关系。
    【解决方案3】:

    如果您使用的是 Glew OpenGL 扩展,请确保初始化它。

    glewInit();

    否则什么都画不出来。

    【讨论】:

      【解决方案4】:

      您可以使用glad为您提供glGenBuffers

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-28
        相关资源
        最近更新 更多