0

OpenGL と GxBase を使用してテクスチャをロードしています。

if (Image.Load("ball.jpg"))
{
    Image.FlipY();
    glBindTexture(GL_TEXTURE_2D, MyTexture[0]);
    Image.gluBuild2DMipmaps();
}

同じテクスチャを 2 回読み込まないようにするにはどうすればよいですか?

4

1 に答える 1

0

GxBaseを使用したことはありませんが、ファイル名をテクスチャID(文字列からGLuints)にマップするマップを維持するだけです。

新しいマップをロードするときは、最初にマップを確認し、そこにある場合は、再度ロードするのではなく、テクスチャIDを返します。それ以外の場合はロードして、生成されたテクスチャIDを保存します

次のようなものを試してください:

std::map<std::string,GLuint> textures;
...

// Inside your method to load textures:

if (textures.count(textureName) == 0)
{
    // load texture
    textures[textureName] = // the GLuint texture id
}
else
{
    return textures[textureName];
}
于 2012-05-03T00:08:56.483 に答える