未找到OpenGL 4.5 glNamedFunction

时间:2016-02-08 18:26:52

标签: c++ opengl linker

我的链接器似乎找不到新的4.5函数:

undefined reference to `glNamedBufferData'

虽然当我做glxinfo | grep version时,我得到了:

OpenGL core profile version string: 4.5.0 NVIDIA 361.18

但是,只有optirun ...

我使用-DGL_GL_EXT_PROTOTYPES进行编译并链接到-glfw -lGL -lpng

我能错过什么?

这是一个最小的(EDITED)代码示例:

#include "glad.h"
#include <GLFW/glfw3.h>

#include <stdio.h>
#include <stdlib.h>

int main()
{
    if(!glfwInit()) return 64;
    GLFWwindow* window = glfwCreateWindow(800,600, "OpenGL Test", NULL, NULL);
    if(!window)
    {
        glfwTerminate();
        return 64;
    }
    glfwMakeContextCurrent(window);
    if(!gladLoadGLLoader((GLADloadproc) glfwGetProcAddress)) {
        exit(66);
    }   
    GLuint buffer;
    glGenBuffers(1, &buffer);
    GLfloat data[] = {0,0, 0,1, 1,1, 1,0};
    glNamedBufferData(buffer, sizeof(data), data, GL_DYNAMIC_DRAW);
    GLint error = glGetError();
    printf("%d\n", error);
    while(!glfwWindowShouldClose(window))
    {
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwTerminate();
    return 0;
}

编译: g++ -DGL_GLEXT_PROTOTYPES main.cc glad.h glad.c -o test -ldl -lGL -lglfw

调用namedBuffers后我收到错误1282 --- INVALID_OPERATION我认为是......

编辑:

因此,我同时使用了glewglad来扩展链接。现在函数调用实际上是编译但是任何“命名”函数实际上对程序没有影响---缓冲区没有提供数据或类似的,尽管所有其他函数仍然按预期工作。

0 个答案:

没有答案