Программа написана на C с использованием SDL2 и openGL. До тех пор, пока я прокомментируюПочему mingw дает неопределенную ссылку на `glUseProgram '?
//glUseProgram(0);
программа компилирует и запускает и отображает цвет glCleared. В том числе ГЛ версия проверки:
const char* renderer = (const char*) glGetString(GL_RENDERER);
puts(renderer);
const char* version = (const char*) glGetString(GL_VERSION);
puts(version);
const char* glslVersion = (const char*) glGetString(GL_SHADING_LANGUAGE_VERSION);
puts(glslVersion);
Какой Распечатайте:
ATI Radeon HD 5670
3.2.11927 Core Profile Context
4.20
И проверка ошибок ГЛ:
GLenum error = glGetError();
switch(error){
case GL_NO_ERROR: puts("no error"); break;
case GL_INVALID_ENUM: puts("invalid enum"); break;
case GL_INVALID_VALUE: puts("invalid value"); break;
case GL_OUT_OF_MEMORY: puts("out of memory"); break;
case GL_INVALID_FRAMEBUFFER_OPERATION: puts("invalid framebuffer operation"); break;
default: break;
}
который печатает:
no error.
Но когда glUseProgram (0) раскоментирован Я получаю followi нг ошибка:
D:\TEMP\ccSTF4cr.o:App.c:(.text+0x320): undefined reference to 'glUseProgram
Я также получаю:
App.c:54.2: warning: implicit declaration of function 'glUseProgram'
Включенные файлы:
#include "SDL2/SDL.h"
#include "SDL2/SDL_opengl.h"
Программа выполняется с помощью .bat файла в Windows XP. .bat является:
del /F /Q bin\app.exe
set files=main.c App.c EventHub.c Game.c MainShader.c
set libs=-LD:\environments\minGW\mingw32\lib -lmingw32 -lopengl32 -lSDL2main -mwindows -lSDL2
set objs=bin\main.obj
gcc -Wall -o bin/app %files% %libs%
bin\app.exe
Если вы не знаете, .BAT-файлов, то% файл% и% ЛИЭС% в команде просто заменить строки в переменных.
Проблема будет заключаться в том, что контекст не поддерживает более позднюю функцию glUseProgram, за исключением того факта, что контекст представляет собой версию 3.2, которая поддерживает эту функцию. В этом случае проблема, кажется, вокруг SDL_opengl.h включает в себя сбор неверного -lopengl32. Но, честно говоря, я действительно не понимаю этот связующий материал, из-за которого я задаю вопрос.
Thankyou для pin указывает, где проблема, но я понимаю, что SDL2 больше не совместим с GLEW. Я не думаю, что кто-то знает какой-либо код для захвата требуемой функциональности из версии графических карт gl dll. – ste3e
Я был неправ. Glew совместим – ste3e