使用 OpenGL 并使用 GxBase 我正在加载我的纹理。
if (Image.Load("ball.jpg"))
{
Image.FlipY();
glBindTexture(GL_TEXTURE_2D, MyTexture[0]);
Image.gluBuild2DMipmaps();
}
如何确保不会两次加载相同的纹理?
我从未使用过 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];
}