【问题标题】:Problem with OpenGL texturing when using core profile使用核心配置文件时出现 OpenGL 纹理问题
【发布时间】:2011-01-24 09:24:16
【问题描述】:

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

我正在使用 DevIL 加载我的纹理,通常使用 ilutGLLoadImage(filename),因为我不确定 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);

我测试了不同的 tex 参数,但没有成功,使用这些参数,至少应该不涉及 mipmapping 相关的问题。 当我将注释部分与 imagedata-array 一起使用时,一切正常,所以我想绑定、绘图和着色没有问题。如果您认为该签名可能会出现问题,我会发布更多代码。

我知道,对于核心配置文件,由于某些原因,纹理可以被视为“不完整”,但我就是不知道为什么会发生这种情况。我没有收到任何错误,无论是来自 DevIL 还是来自 OpenGL。

感谢您的帮助。

【问题讨论】:

    标签: opengl profile core textures


    【解决方案1】:

    您应该检查 GL 错误,ilGetInteger(IL_IMAGE_BPP) 返回每个像素的字节数,这不是内部格式枚举值。请改用 GL_RGB 或 GL_RGBA 等枚举。这在兼容性配置文件中有效,但在核心配置文件中无效。

    【讨论】:

    • 工作,非常感谢! GL 错误是无效的枚举数,虽然我有这个错误很长一段时间,现在它终于击中了我;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2016-03-06
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多