Opengl glBindTextures返回无效的GLU操作

Opengl glBindTextures返回无效的GLU操作,opengl,bitmap,textures,Opengl,Bitmap,Textures,这里有一些代码 GLEnum gl_error; CString sError = ""; gl_error = glGetError(); //clear the error code glEnd(); // to make sure Im not between glBegin/glEnd pairing GLuint tex1; glGenTextures( 1, &tex1 ); gl_error = glGetError(); if(gl_error == GL_INVAL

这里有一些代码

GLEnum gl_error;
CString sError = "";
gl_error = glGetError(); //clear the error code
glEnd(); // to make sure Im not between glBegin/glEnd pairing

GLuint tex1;
glGenTextures( 1, &tex1 );

gl_error = glGetError();
if(gl_error == GL_INVALID_VALUE){
    sError = "GL Gen Texture failed\r\n"; // << this does NOT get hit
}

glBindTexture( GL_TEXTURE_2D, tex1 );

gl_error = glGetError();
switch(gl_error){
case GL_INVALID_VALUE:
    sError = "GL Bind Texture failed, VALUE\r\n";
    break;
case GL_INVALID_ENUM:
    sError = "GL Bind Texture failed, ENUM\r\n";
    break;
case GL_INVALID_OPERATION:
    sError = "GL Bind Texture failed, OPERATION\r\n"; // <<< this DOES get hit
    break;
}

我假设tex1和tex2应该是唯一的。但它们不是,我对这些纹理名称的创建会是我的问题吗?这些对glGenTexture的调用不会返回GL_INVALID_值

我甚至在运行main()函数之前就试图运行这段代码,所以我所有的OpenGL初始化调用都还没有运行


我可以发誓我以前试过这个,但我肯定有更多的错误,这可能导致它也无法运行回去。

我也遇到了同样的问题,glBindTexture()不起作用

在GLTEXAGE2D()之前设置纹理参数,我成功地解决了这个问题


杂乱无章的<代码> GLTEN(…)>代码>在无关紧要的地方打电话是怎么回事?如果这确实终止了一个
glBegin(…)
调用,那么在调用之前对
glGenTextures(…)
的调用立即无效。glBindTexture返回GL\u invalid\u操作的原因之一是glBindTexture必须在glBegin()/glEnd对之外调用,因此,为了确保这不是我的问题,我在glBindTexture之前放置了一个glEnd()。然而,您最大的问题是,您正在生成一个纹理名称并将其存储在
tex1
中。稍后,您将尝试绑定名为
m_texture
的纹理(可以是任何东西…1D、3D、立方体贴图、矩形等)纹理。如果它不是2D纹理的名称,则会发生此错误。@andon:哦,我将尝试将glEnd()放在glGenTextures()调用之前。编辑:这并没有解决问题。@andon:对不起,我是在复制和粘贴代码,我向您保证我绑定到创建的纹理名称,但仍然会出现此错误。
GLuint tex1, tex2;
glGenTextures( 1, &tex1 );
glGenTextures( 1, &tex2 );
if(tex1 == tex2){
    sError = "GL Get Tecture failed\r\n";
}
glGenTextures(1, &texOGL);
glBindTexture(GL_TEXTURE_2D, texOGL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);