0

openGL で 64 ビット深度カラーの PNG ファイルを読み込むにはどうすればよいですか? SOIL と SDL を試しましたが、表示されているテクスチャは白です。32ビット深度の場合、完全に機能します(PNGにグラデーションが含まれている場合のみ、スムーズに表示されず、色が少し洗い流されます)->何かが正しく機能していません. 数多くのフォーラムで試してみましたが、問題が解決しないようです。SOILで使用する関数は次のとおりです。

    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ファイルがあります。

4

1 に答える 1

2

64ビットのPNGファイルはありますか?? どれどれ:

  1. SOIL で使用される stb_image ライブラリは 64 ビット PNG をサポートしていません: http://nothings.org/stb_image.c
  2. SDL は、すべてをサポートする必要がある libpng を使用します。
  3. テクスチャが GL_RGBA16 を使用していることを確認してください。

OpenGL 実装が GL_RGBA16 をサポートしていることを確認するために、64 ビット テクスチャを手動で作成することをお勧めします。例: 赤の単純なグラデーションをメモリ内に作成し、それをテクスチャとしてロードします。作業が完了したら、SDL でテクスチャをロードしてみてください。

于 2014-01-28T19:06:22.960 に答える