【问题标题】:glEnableClientState was not declared in OpenGL v4.5glEnableClientState 未在 OpenGL v4.5 中声明
【发布时间】:2016-10-23 13:45:43
【问题描述】:

我正在使用 OpenGL 4.5.0 版并收到此错误:

error: ‘glEnableClientState’ was not declared in this scope

我读到glEnableClientState 在这个版本中已被弃用,但我需要编写与此方法兼容的代码,因为这是课堂上的家庭作业,他们要求我们使用此方法编写。有什么办法可以让我在 OpenGL 4.5.0 中工作?

包含这个没有任何效果:

glutInitContextVersion (3,3);
glutInitContextProfile (GLUT_COMPATIBILITY_PROFILE);

【问题讨论】:

    标签: opengl


    【解决方案1】:
    glutInitContextProfile (GLUT_CORE_PROFILE);
    

    这与您需要做的相反。如果需要兼容 OpenGL 功能,则必须使用GLUT_COMPATIBILITY_PROFILE

    但是:

    错误:“glEnableClientState”未在此范围内声明

    这表明您使用的OpenGL loading library 甚至没有声明这个函数。这意味着您需要迁移到可以公开兼容性配置文件 OpenGL 功能的版本。

    【讨论】:

    • 我安装了glew1.6glew2。如何在 C++ 中导入以前的版本? #include <GL/glew.h> 似乎正在导入 glew2
    • @Mario:两个都应该有那个功能,所以不清楚是什么问题。
    • 文件中缺少行 #include <GL/glew.h>,现在可以使用 glew。谢谢。
    【解决方案2】:

    glEnableVertexAttribArrayglVertexAttribPointer 是 glEnableClientState/glVertexPointer 的“现代”替代品。自 GL 2.0 以来,新的通用变体已可用。

    【讨论】:

    • 哦,我假设我的代码示例来自版本 3。我需要使用这种方法,因为它是家庭作业,他们要求我们使用它来编写 OpenGL。谢谢,我已经编辑了问题。
    猜你喜欢
    • 1970-01-01
    • 2016-07-27
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    相关资源
    最近更新 更多