这是一些代码
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;
}
如果纹理具有维度,则生成GL_INVALID_OPERATION 与目标不匹配。
如果在其间执行glBindTexture,则生成GL_INVALID_OPERATION glBegin的执行和glEnd的相应执行。“
这些是glBindTexture()之后OPERATION错误的原因,或许多参考页面告诉我。 我自己调用glEnd()以确保我没有glBegin()/ glEnd()对。 所以我必须陷入第二个错误,,,我的纹理的维度与目标的维度不匹配,但是我被告知这两个函数都需要创建(glGenTextures)一个独特的纹理并绑定它(glBindTexture)
ALSO:
GLuint tex1, tex2;
glGenTextures( 1, &tex1 );
glGenTextures( 1, &tex2 );
if(tex1 == tex2){
sError = "GL Get Tecture failed\r\n";
}
我假设tex1和tex2应该是唯一的。但他们不是,我的这些纹理名称的创造可以成为我的问题吗?这些对glGenTexture的调用不返回GL_INVALID_VALUE
答案 0 :(得分:0)
我甚至在运行main()函数之前尝试运行此代码,因此我的所有OpenGL初始化调用尚未运行。
我本来可以发誓我过去曾尝试过这个,但我肯定会有更多的错误,这可能导致它不会再跑回来。
答案 1 :(得分:0)
我也遇到了同样的问题,glBindTexture()没有用。
我设法修复它在glTexImage2D()
之前设置纹理参数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);