Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
使用core profile时OpenGL纹理出现问题_Opengl_Profile_Core_Textures - Fatal编程技术网

使用core profile时OpenGL纹理出现问题

使用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

我的问题是,当使用 glutInitContextProfile(GLUT_CORE_PROFILE)而不是glutInitContextProfile(GLUT_COMPATIBILITY_PROFILE),纹理区域只是保持黑色。 (只是要强调:通过兼容性配置文件,一切都按照我期望的方式运行)

我使用DevIL加载纹理,通常使用ilutGLLoadImage(文件名),因为我不确定DevIL是否正确设置了tex参数,我还使用该代码加载了一些纹理:

    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错误是无效的枚举器,虽然我有一段时间出现该错误,但现在它终于击中了我;)