我的链接器似乎找不到新的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我认为是......
编辑:
因此,我同时使用了glew
和glad
来扩展链接。现在函数调用实际上是编译但是任何“命名”函数实际上对程序没有影响---缓冲区没有提供数据或类似的,尽管所有其他函数仍然按预期工作。