高效的 OpenGL 纹理加载 gxbase

Posted

技术标签:

【中文标题】高效的 OpenGL 纹理加载 gxbase【英文标题】:efficient OpenGL texture loading gxbase 【发布时间】:2012-05-02 23:40:01 【问题描述】:

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

if (Image.Load("ball.jpg"))

    Image.FlipY();
    glBindTexture(GL_TEXTURE_2D, MyTexture[0]);
    Image.gluBuild2DMipmaps();

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

【问题讨论】:

【参考方案1】:

我从未使用过 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];

【讨论】:

您是否有机会获得该代码的 sn-ps 或指导我学习该教程?谢谢

以上是关于高效的 OpenGL 纹理加载 gxbase的主要内容,如果未能解决你的问题,请参考以下文章

在OpenGL中动态加载纹理的好方法是啥?

使用 Boost.GIL 加载 opengl 纹理

使用 SDL 加载 OpenGL 纹理

OpenGL - 纹理加载不正确

OpenGL:纹理加载但未应用

加载 HBITMAP 并将其转换为 OpenGL 纹理