ASSIMP模型加载器泄漏问题
创始人
2024-09-20 19:00:35
0次

该问题的根本原因是由于assimp库中的代码在处理顶点数据时可能会造成内存泄漏。为了避免这个问题,我们可以通过自己管理内存来解决这个问题。

以下是解决方法的示例代码:

#include 
#include 
#include 
#include 

struct MeshData
{
    unsigned int VAO;
    unsigned int VBO;
    unsigned int EBO;
    unsigned int numIndices;

    MeshData() : VAO(0), VBO(0), EBO(0), numIndices(0) { }

    ~MeshData()
    {
        if (VAO) glDeleteVertexArrays(1, &VAO);
        if (VBO) glDeleteBuffers(1, &VBO);
        if (EBO) glDeleteBuffers(1, &EBO);
    }
};

void LoadMesh(const char *filename)
{
    Assimp::Importer importer;
    const aiScene *scene = importer.ReadFile(filename, aiProcess_Triangulate | aiProcess_FlipUVs);

    if (!scene || scene->mFlags & AI_SCENE_FLAGS_INCOMPLETE || !scene->mRootNode)
        throw std::runtime_error("Failed to load mesh");

    aiMesh *mesh = scene->mMeshes[0];
    MeshData data;

    glGenVertexArrays(1, &data.VAO);
    glGenBuffers(1, &data.VBO);
    glGenBuffers(1, &data.EBO);

    glBindVertexArray(data.VAO);
    glBindBuffer(GL_ARRAY_BUFFER, data.VBO);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, data.EBO);

    glBufferData(GL_ARRAY_BUFFER, mesh->mNumVertices * sizeof(aiVector3D), &mesh->mVertices[0][0], GL_STATIC_DRAW);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, mesh->mNumFaces * 3 * sizeof(unsigned int), &mesh->mFaces[0].mIndices[0], GL_STATIC_DRAW);

    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(aiVector3D), 0

相关内容

热门资讯

玩家必看教程透视器app!天听... 玩家必看教程透视器app!天听之旅多功能透视器app,天听之旅本来真的有透视器app1.天听之旅 选...
热点推荐作弊器插件!欢乐划水麻... 热点推荐作弊器插件!欢乐划水麻将多功能作弊器插件,欢乐划水麻将确实是真的有作弊器插件小薇(辅助器软件...
分享开挂内幕辅助技巧!无锡麻将... 分享开挂内幕辅助技巧!无锡麻将多功能辅助技巧,无锡麻将都是存在有辅助技巧1、很好的工具软件,可以解锁...
玩家科普透视挂攻略!青橙竞技多... 玩家科普透视挂攻略!青橙竞技多功能透视挂攻略,青橙竞技一直存在有透视挂攻略青橙竞技脚本下载中分为三种...
大神推荐作弊器教程!桂麻圈多功... 大神推荐作弊器教程!桂麻圈多功能作弊器教程,桂麻圈果然有作弊器教程桂麻圈辅助器是一种具有地方特色的麻...
总算了解开挂脚本!决战卡五星多... 总算了解开挂脚本!决战卡五星多功能开挂脚本,决战卡五星果然真的是有开挂脚本1、这是跨平台的决战卡五星...
指导大家作弊器app!微乐长沙... 指导大家作弊器app!微乐长沙麻将多功能作弊器app,微乐长沙麻将果然真的有作弊器app微乐长沙麻将...
实测必看透视挂脚本!天涯麻将多... 实测必看透视挂脚本!天涯麻将多功能透视挂脚本,天涯麻将总是存在有透视挂脚本所有人都在同一条线上,像星...
玩家爆料作弊器插件!鲁乐山东麻... 玩家爆料作弊器插件!鲁乐山东麻将多功能作弊器插件,鲁乐山东麻将真是存在有作弊器插件1、点击下载安装,...
科技揭秘辅助工具!嵘聚多功能辅... 科技揭秘辅助工具!嵘聚多功能辅助工具,嵘聚一直是有辅助工具所有人都在同一条线上,像星星一样排成一排,...