使用core profile时OpenGL纹理出现问题
我的问题是,当使用 glutInitContextProfile(GLUT_CORE_PROFILE)而不是glutInitContextProfile(GLUT_COMPATIBILITY_PROFILE),纹理区域只是保持黑色。 (只是要强调:通过兼容性配置文件,一切都按照我期望的方式运行) 我使用DevIL加载纹理,通常使用ilutGLLoadImage(文件名),因为我不确定DevIL是否正确设置了tex参数,我还使用该代码加载了一些纹理:使用core profile时OpenGL纹理出现问题,opengl,profile,core,textures,Opengl,Profile,Core,Textures,我的问题是,当使用 glutInitContextProfile(GLUT_CORE_PROFILE)而不是glutInitContextProfile(GLUT_COMPATIBILITY_PROFILE),纹理区域只是保持黑色。 (只是要强调:通过兼容性配置文件,一切都按照我期望的方式运行) 我使用DevIL加载纹理,通常使用ilutGLLoadImage(文件名),因为我不确定DevIL是否正确设置了tex参数,我还使用该代码加载了一些纹理: ILuint img; ilGenI
ILuint img;
ilGenImages(1, &img);
ilBindImage(img);
ILboolean ret = false;
if((ret = ilLoadImage("...jpg"))){
ret = ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
if(!ret){
std::cout << "image conversion failed" << std::endl;
}
glGenTextures(1, &texture[20]);
glBindTexture(GL_TEXTURE_2D, texture[20]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
/*char imageData[27] = {
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
};*/
//glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 3, 3, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);
glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH),
ilGetInteger(IL_IMAGE_HEIGHT), 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE,
ilGetData());
}
else{
std::cout << "image file not found" << std::endl;
}
ilDeleteImages(1, &img);
ILuint-img;
ilGenImages(1,&img);
ilBindImage(img);
ILRET=假;
如果((ret=ilLoadImage(“…jpg”)){
ret=ILCONVERTMAGE(IL_RGBA,IL_无符号字节);
如果(!ret){
std::cout您应该检查GL错误,ilGetInteger(IL_IMAGE_BPP)返回每像素的字节数,这不是内部格式枚举值。请改用GL_RGB或GL_RGBA之类的枚举。这在兼容性配置文件中有效,但在核心配置文件中无效。有效,非常感谢!GL错误是无效的枚举器,虽然我有一段时间出现该错误,但现在它终于击中了我;)