【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )

目录

  • 1. 编译库
    • 1.1 下载源码
    • 1.2 CMake编译
      • 1.2.1 Could not locate DirectX 错误
      • 1.2.2 Error Code:s1023
    • 1.3 生成解决方案
      • 1.3.1 无法打开包括文件: “gtest/gtest.h”/“gtest.lib”?
  • 2. 在VS中配置库文件
    • 2.1 config.h
    • 2.2 头文件
    • 2.3 .lib 文件
    • 2.4 .dll 文件
  • 3. 尝试

1. 编译库

学过了不同光照的渲染,接下来就轮到更多模型的拓展了,现实生活中我们不可能所有物体都是简单的立方体,还会有更复杂的模型,怎么将这些模型导入OpenGL?

Assimp,它是Open Asset Import Library(开放的资产导入库)的缩写。Assimp能够导入很多种不同的模型文件格式(并也能够导出部分的格式),它会将所有的模型数据加载至Assimp的通用数据结构中。

1.1 下载源码

为了使用这个库,我们需要进入这个地址下载它的源码(选择第三项)

【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第1张图片

1.2 CMake编译

将下载好的文件解压后,打开之前安装过的Cmake,选择解压的目录为源代码目录,然后在该目录下创建一个build文件夹,选择它为build文件的存储路径:

【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第2张图片

点击左下角Configure,按照自己的VS版本选择:
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第3张图片

1.2.1 Could not locate DirectX 错误

如果出现Could not locate DirectX,请去安装DirectX SDK
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第4张图片

1.2.2 Error Code:s1023

安装DirectX SDK失败,出现Error Code:s1023?
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第5张图片
卸载所有电脑内C++ Redistributable packages:
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第6张图片

1.3 生成解决方案

出现这个界面之后不用担心,点击左下角Generate,完成之后再点击Open Project打开VS,右键解决方案,选择生成解决方案:
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第7张图片

【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第8张图片

1.3.1 无法打开包括文件: “gtest/gtest.h”/“gtest.lib”?

出现无法打开包括文件: “gtest/gtest.h”或者“gtest.lib”?
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第9张图片
看看是不是下载的最新版的assimp库
一切无误后会出现成功提示:
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第10张图片

2. 在VS中配置库文件

2.1 config.h

将导出工程中build\include\assimp 的 config.h 拷到源码 include/assimp 目录中
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第11张图片
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第12张图片

2.2 头文件

将源码 include\assimp 文件夹拷贝到 VS2019 安装目录下的 \Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\include
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第13张图片

2.3 .lib 文件

将编译好的build\lib\Debug 下的 assimp-vc142-mt.lib 拷贝到 \Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\lib\x64目录
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第14张图片
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第15张图片

2.4 .dll 文件

拷贝 build\bin\Debug的assimp-vc142-mt.dll 到系统目录,这里需要注意下 32 位 系统和 64 位 系统的区别。64 位 系统下 System32 目录是存放 64位 dll 的,SysWOW64 是用来存放 32位 dll 的
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第16张图片
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第17张图片
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第18张图片

3. 尝试

#include       // C++ importer interface
#include            // Output data structure
#include      // Post processing flags
#include 

#pragma comment (lib, "assimp-vc142-mt.lib")

void LoadFinish(const aiScene* scene)
{
	std::cout << "LoadFinish ! NumVertices : " << (*(scene->mMeshes))->mNumVertices << std::endl;
}

bool LoadModel(const std::string& pFile) 
{
	// Create an instance of the Importer class
	Assimp::Importer importer;

	// And have it read the given file with some example postprocessing
	// Usually - if speed is not the most important aspect for you - you'll
	// probably to request more postprocessing than we do in this example.
	const aiScene* scene = importer.ReadFile(pFile,
		aiProcess_CalcTangentSpace |
		aiProcess_Triangulate |
		aiProcess_JoinIdenticalVertices |
		aiProcess_SortByPType);

	// If the import failed, report it
	if (!scene)
	{
		std::cout << importer.GetErrorString() << std::endl;
		return false;
	}

	// Now we can access the file's contents.
	LoadFinish(scene);

	// We're done. Everything will be cleaned up by the importer destructor
	return true;
}

int main()
{
	LoadModel("bun_zipper.ply");
 
	return 0;
}

模型下载链接:兔子
【OpenGL】笔记十五、Assimp 5.2.4 编译配置(Win10 / VS2019 )_第19张图片

你可能感兴趣的:(OpenGL,c++,opengl,图形渲染,着色器)