0

使用 OpenGL 并使用 GxBase 我正在加载我的纹理。

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

如何确保不会两次加载相同的纹理?

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 回答