Assimp嵌入式纹理

时间:2019-12-19 15:47:31

标签: assimp

我在DirectX中使用Assimp加载纹理时遇到问题。

我收到错误消息“访问冲突写入位置”。

通过此函数:material-> GetTexture()

我只输入前三个参数,键入index和类似这样的路径:

    aiString* path = nullptr;

    mat->GetTexture(aiTextureType_DIFFUSE, 0, path);

你能看到我在做什么吗?

编辑 我将路径更改为不是字符串,然后通过了地址,该地址可以正常工作,但是现在我在这些功能上遇到了相同的错误:

    unsigned int test = scenePtr->mTextures[index]->mWidth;
    unsigned int test2 = scenePtr->mTextures[index]->mHeight;
    uint8_t* test3=(uint8_t*)scenePtr->mTextures[index]->pcData;

如果我不将其另存为变量,则它可以工作,但是一旦我尝试将其另存为变量,不管地址是否正确,它就不起作用:S我需要信息。

更新

当我检查纹理时,它说我没有嵌入式纹理。

它还说,当我尝试访问纹理时,指针为NULLPTR。

但是我导入了带有纹理的FBX。

当我检查材料时,确认者我拥有一种材料。

当我从该材质中查找纹理的路径时,它为我提供了我使用的纹理源的路径,然后再将其提供给建模软件。

据我了解,GetTexture仅适用于非嵌入式纹理,尽管fbx中有一个纹理,但我不理解为什么它说我没有嵌入式纹理?

1 个答案:

答案 0 :(得分:0)

尝试一下:

aiString texture;
Mat->GetTexture( ..., &texture);

GetTexture方法需要aiString的有效实例。然后您的代码将按预期工作。