C++ 创建glShaderObject时出现OpenGL无效枚举错误
我得到了无效的枚举数C++ 创建glShaderObject时出现OpenGL无效枚举错误,c++,opengl,glut,glew,C++,Opengl,Glut,Glew,我得到了无效的枚举数 GL Error #1280(invalid enumerant) 错误代码如下: CHECK_GL_ERROR(); glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB); CHECK_GL_ERROR(); 其中CHECK\u GL\u ERROR()宏定义如下: int CheckGLError(char *file, int line) { GLenum glErr; int retCode = 0;
GL Error #1280(invalid enumerant)
错误代码如下:
CHECK_GL_ERROR();
glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
CHECK_GL_ERROR();
其中CHECK\u GL\u ERROR()
宏定义如下:
int CheckGLError(char *file, int line)
{ GLenum glErr;
int retCode = 0;
glErr = glGetError();
while (glErr != GL_NO_ERROR)
{ const GLubyte* sError = gluErrorString(glErr);
if (sError)
cerr << "GL Error #" << glErr << "(" << gluErrorString(glErr) << ") " << " in File " << file << " at line: " << line << endl;
else
cerr << "GL Error #" << glErr << " (no message available)" << " in File " << file << " at line: " << line << endl;
retCode = 1;
glErr = glGetError();
}
return retCode;
}
#define CHECK_GL_ERROR() CheckGLError(__FILE__, __LINE__)
int checklerror(字符*文件,int行)
{GLenum glErr;
int-retCode=0;
glErr=glGetError();
while(glErr!=GL\u无错误)
{const GLubyte*sError=gluErrorString(glErr);
if(sError)
cerr这不是一个实际的答案,但以评论的形式写太长了……我怀疑你没有在正确的硬件加速环境中运行
你能把下面的代码添加到你的程序中并把输出包含在你的问题中吗
#include <cstdio>
...
const GLubyte* vendor = glGetString (GL_VENDOR);
const GLubyte* renderer = glGetString (GL_RENDERER);
const GLubyte* version = glGetString (GL_VERSION);
const GLubyte* glsl_ver = glGetString (GL_SHADING_LANGUAGE_VERSION);
printf ( "%s : %s (%s)\n >> GLSL: %s\n",
vendor,
renderer,
version,
glsl_ver );
糟糕!不要使用GLSL的ARB扩展,使用core GLSL。它在OpenGL 2.0中使用了core。那么我应该将函数更改为:glCreateShaderObject(GL_VERTEX_SHADER);
?不,该函数名为glCreateShader
(末尾没有对象),调用将是glCreateShader(GL_VERTEX_SHADER)
。我认为您用…Object
作为后缀是它失败的部分原因。与glCreateShader(GL\u VERTEX\u SHADER)相同的错误;
…奇怪如果这是用于检测GL错误的宏/函数组合,为什么不打印文件/行号?这将是有用的信息,因为目前有两个地方会发生此检查,我们无法知道错误是在调用glCreateShader(…)之前还是之后生成的
。
NVIDIA Corporation : NVIDIA GeForce GT 330M OpenGL Engine (2.1 NVIDIA-1.6.36)
>> GLSL: 1.20