OpenGL图像加载64位深度

OpenGL Image loading 64 bit depth

本文关键字:深度 64位 加载 图像 OpenGL      更新时间:2023-10-16

如何加载openGL中具有64位深度颜色的PNG文件?我尝试过土壤和SDL,但他的质感是白色。对于32位的深度来说,效果很好(只有当我的png包含梯度时,它不会顺利显示,并且颜色被稍微洗了一点) ->某些东西无法正常工作。我已经在Numeroues论坛上尝试过,但似乎没有解决我的问题。这是我在土壤中使用的功能:

    bool LoadGLTextures()                                  
    {
        texture = SOIL_load_OGL_texture 
    (
    "mountain.png",
    SOIL_LOAD_AUTO,
    SOIL_CREATE_NEW_ID,
    SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
    );

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    return true;
  }

当我绘制纹理时,请使用:

    glBindTexture(GL_TEXTURE_2D, texture);
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    //Code for drawing quad with texture (glTexCoord and  glVertex)

我在项目目录中有我的png文件。

有64位PNG文件?让我们看看:

  1. 土壤使用的STB_IMAGE库不支持64位PNG:http://nothings.org/stb_image.c
  2. SDL使用libpng,它应该支持一切。
  3. 确保纹理使用GL_RGBA16。

我建议尝试手动创建64位纹理,以确保您的OpenGL实现支持GL_RGBA16。例如:在内存中创建一个简单的红色梯度,然后将其作为纹理加载。然后,一旦您有工作,请尝试使用SDL加载纹理。