我怀疑我可能在我的opengl头文件中缺少代码,或者我的编译无法查询和加载与着色器编译相关的代码。我使用Simple DirectMedia Layer,我可以编写和运行OpenGL代码的所有短片 - 直到我着色。我有一个朋友有同样的问题。当我得到着色器时,我得到了很多未声明的语句:OpenGL Shader编译代码位于何处?
$ make
cc -c -o proceduralTexture.o proceduralTexture.c
proceduralTexture.c: In function 'PrintShaderLog':
proceduralTexture.c:60:22: error: 'GL_INFO_LOG_LENGTH' undeclared (first use in
this function)
glGetShaderiv(obj,GL_INFO_LOG_LENGTH,&len);
^
proceduralTexture.c:60:22: note: each undeclared identifier is reported only onc
e for each function it appears in
proceduralTexture.c:70:22: error: 'GL_COMPILE_STATUS' undeclared (first use in t
his function)
glGetShaderiv(obj,GL_COMPILE_STATUS,&len);
^
proceduralTexture.c: In function 'PrintProgramLog':
proceduralTexture.c:76:23: error: 'GL_INFO_LOG_LENGTH' undeclared (first use in
this function)
glGetProgramiv(obj,GL_INFO_LOG_LENGTH,&len);
^
proceduralTexture.c:85:23: error: 'GL_LINK_STATUS' undeclared (first use in this
function)
glGetProgramiv(obj,GL_LINK_STATUS,&len);
^
proceduralTexture.c: In function 'SDL_main':
proceduralTexture.c:430:34: error: 'GL_FRAGMENT_SHADER' undeclared (first use in
this function)
_procShader = glCreateShader(GL_FRAGMENT_SHADER);
^
proceduralTexture.c:438:34: error: 'GL_VERTEX_SHADER' undeclared (first use in t
his function)
_vertShader = glCreateShader(GL_VERTEX_SHADER);
^
make: *** [proceduralTexture.o] Error 1
我有OpenGL版本4.2。我包括proceduralTexture.c的文件有:
#include <stdio.h>
#include <math.h>
#include "SDL/SDL.h"
#include <GL/gl.h>
#include <GL/glu.h>
而且我生成文件看起来像这样:
proceduralTexture: proceduralTexture.o
# Windows
gcc -Wall -O3 -o [email protected] $^ -lopengl32 -lmingw32 -lSDLmain -lSDL -lSDL_mixer -lz
我缺少什么?
如果你#include'它工作吗? OpenGL规范指出:“'和''的组合总是为最新OpenGL版本的所有配置文件以及注册表中定义的所有扩展定义所有API。”如果你使用核心配置文件,那么规范说你可以使用'#include '。 –
bames53
我累了'#包括'没有运气(没有变化)。我似乎没有glcorearb头文件。 –
danglingPointer