Я пытаюсь создать приложение OpenGl. Сначала я использовал старый контур фиксированной функции для рисования. Затем я заметил, что это устарело и захотелось перейти на программируемый конвейер. Для этого я использовал некоторые учебные пособия в Интернете. После изменения моего кода я попытался скомпилировать его, но мой компилятор не смог найти функции (core profile?), Такие как glShaderSource, glCompileShader, glCreateProgram, glAttachShader, glLinkProgram и некоторые другие. Я не использую библиотеку GLFW для управления окнами или что-то подобное, но xlib.OpenGl XUbuntu 14.04 glShaderSource, glCompileShader, glCreateProgram функции не объявлены
glxinfo | Grep OpenGl печатает следующее:
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 675M/PCIe/SSE2
OpenGL core profile version string: 4.3.0 NVIDIA 331.113
OpenGL core profile shading language version string: 4.30 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.4.0 NVIDIA 331.113
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
Я попытался как проприетарный драйвер Nvidia и драйвер с открытым исходным кодом, но это не исправить эту проблему.
I включают OpenGl заголовки следующим образом:
#include <GL/gl.h>
#include <GL/glx.h>
Вот некоторые из вывода ошибок компиляции:
In file included from main.cpp:1:0:
../../gui/iml/app.window.h: In constructor ‘gui::iml::AppWindow::AppWindow()’:
../../gui/iml/app.window.h:65:52: error: ‘glCreateShader’ was not declared in this scope
fragmentShader = glCreateShader(GL_VERTEX_SHADER);
^
../../gui/iml/app.window.h:66:47: error: ‘glShaderSource’ was not declared in this scope
glShaderSource(vertexShader,1,&vshader,NULL);
^
../../gui/iml/app.window.h:67:32: error: ‘glCompileShader’ was not declared in this scope
glCompileShader(vertexShader);
^
../../gui/iml/app.window.h:72:38: error: ‘glCreateProgram’ was not declared in this scope
GLuint sprogram = glCreateProgram();
^
../../gui/iml/app.window.h:73:50: error: ‘glAttachShader’ was not declared in this scope
glAttachShader(this->shaderProg,fragmentShader);
^
../../gui/iml/app.window.h:75:34: error: ‘glLinkProgram’ was not declared in this scope
glLinkProgram(this->shaderProg);
Я компилировать программу тестирования, я создал для отладки, следующим образом :
g++ -Wall -Winline -DDEBUG main.cpp -I ../../gui/ -o debug -lX11 -lGL -lGLU -pthread -std=c++11
Я думаю, что сделал простую и глупую ошибку, но я не понимаю ...
редактировать: Я заглянул в мой файл gl.h и увидел, что из проекта Mesa:
/*
* Mesa 3-D graphics library
*
* Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
* Copyright (C) 2009 VMware, Inc. All Rights Reserved.
*
Если это не заголовочные файлы драйвера Nvidia?
решаемые:
мне пришлось скачать файл заголовка gl3.h отсюда: https://www.khronos.org/registry/gles/api/old/3.0/gl3.h и переместить его в/USR/включать/GL/
Затем я установил файлы разработки OpenEs через:
sudo apt-get install libgles2-mesa-dev
и теперь программа компилируется!