Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C &引用;glGenTextures";使用4.2 OpenGL时返回1282错误_C_Linux_Opengl_Freeglut - Fatal编程技术网

C &引用;glGenTextures";使用4.2 OpenGL时返回1282错误

C &引用;glGenTextures";使用4.2 OpenGL时返回1282错误,c,linux,opengl,freeglut,C,Linux,Opengl,Freeglut,我正在使用默认函数glGenTextures创建OpenGL纹理。当OpenGL版本设置为3.0时,一切正常,但当我用4.2 glGenTextures覆盖它时,开始抛出错误#1282(无效操作)。我做错了什么 下面是我测试过的代码段: #包括“GL/freeglut.h” #包括“总账/总账h” #定义主要GLU版本3 #定义次要GLU版本0 int w=200; int h=200; 常量字符*title=“title”; int main(int argc,char const*argv[

我正在使用默认函数glGenTextures创建OpenGL纹理。当OpenGL版本设置为3.0时,一切正常,但当我用4.2 glGenTextures覆盖它时,开始抛出错误#1282(无效操作)。我做错了什么

下面是我测试过的代码段:

#包括“GL/freeglut.h”
#包括“总账/总账h”
#定义主要GLU版本3
#定义次要GLU版本0
int w=200;
int h=200;
常量字符*title=“title”;
int main(int argc,char const*argv[]
{
puts(“覆盖默认OpenGL版本…”);
glutInitContextVersion(主要版本、次要版本);
glutInitContextProfile(GLUT_核心_配置文件);
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_ALPHA);
GLUTINITIZE(w,h);
创建窗口(标题);
printf(“使用OpenGL版本:%s\n=============\n”,(char*)glGetString(GL_版本));
glViewport(0,0,w,h);
glMatrixMode(GL_投影);
glLoadIdentity();
格洛托(0,w,h,0,-1,1);
glMatrixMode(GLU模型视图);
glEnable(GL_纹理_2D);
glEnable(GLU深度试验);
glShadeModel(GL_平滑);
glEnable(GL_α_试验);
glEnable(GL_混合物);
盂误差;
GLuint-id=0;
glGenTextures(1,&id);
如果((error=glGetError())!=GL_无错误|| id==0)
{
printf(“总账错误:%s(错误号%i)\n”),gluErrorString(错误),error;
返回0;
}
而(1){}
返回0;
}

错误可能不会发生在您预期的行中。
glGenTextures
之前的一些方法很可能是问题所在。这两条线都没有

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w, h, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);

glShadeModel(GL_SMOOTH);
允许在OpenGL核心配置文件中使用。概要文件是在OpenGL 3.2中引入的,因此在请求3.0上下文时,核心概要文件请求没有任何效果。但是有了3.2+,你会得到一个核心配置文件,删除了很多东西

您可以删除上面提到的行,并用与核心配置文件兼容的代码替换它们。或者,当您想要坚持使用固定的函数管道时,您可以显式地请求一个兼容性配置文件(
glutInitContextProfile(GLUT\u compatibility\u profile)