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

相关内容

热门资讯

分享实测!wepoker透视脚... 分享实测!wepoker透视脚本安卓(辅助挂)都是是有挂(有挂攻略辅助app);1、模拟器是什么优化...
必备教程!wepoker怎么挂... 必备教程!wepoker怎么挂底牌(辅助挂)一直存在有挂(有挂方略辅助教程)1、让任何用户在无需安装...
盘点几款!wepoker怎么看... 盘点几款!wepoker怎么看牌型(辅助挂)真是真的有挂(存在有挂辅助插件)该软件可以轻松地帮助玩家...
六分钟了解!wpk辅助是什么(... 六分钟了解!wpk辅助是什么(辅助挂)原来是真的有挂(有挂规律辅助方法)1、操作简单,无需手机版透视...
指导大家!we-poker是什... 指导大家!we-poker是什么软件(辅助挂)都是是真的有挂(有挂辅助辅助教程)在进入软件靠谱后,参...
避坑细节!拱趴大菠萝万能辅助器... 避坑细节!拱趴大菠萝万能辅助器(辅助挂)本来真的是有挂(有挂透视辅助app)1、免费辅助多个强度级别...
玩家必看科普!wejoker免... 玩家必看科普!wejoker免费脚本(辅助挂)一贯真的有挂(有挂方针辅助app)1、完成有辅助插件,...
解密关于!pokemmo手机脚... 解密关于!pokemmo手机脚本辅助器(辅助挂)一贯有挂(证实有挂辅助插件)1、游戏颠覆性的策略玩法...
每日必看!wejoker透视方... 每日必看!wejoker透视方法(辅助挂)确实是真的有挂(有挂分享辅助技巧)1、实时透视辅助更新:用...
如何分辨真伪!约局吧德州可以透... 如何分辨真伪!约局吧德州可以透视吗(辅助挂)一直有挂(有挂辅助辅助插件)1、让任何用户在无需安装教程...