文中若有代码、术语等错误,欢迎指正
023.渲染介绍
-
渲染器基本上是指我们在屏幕上绘制图形的能力
保真性,模拟现实世界
-
GPU用来并行计算图形像素
-
与GPU交互需要图形接口API,OpenGl就是其中之一
-
OpenGL较为简单
024.渲染架构
一句话:用抽象的类封装渲染图形API
025.渲染维护
ImGui无法找到函数定义解决
-
原因
扫描二维码关注公众号,回复: 15490602 查看本文章ImGui静态链接到Hazel.dll中,但是Hazel.dll有能力删除ImGui中没有导出的函数定义内容,因此如果在链接dll文件的exe文件使用ImGui的内容,就会链接错误。
但区分:ImGui.lib静态链接到Hazel中,Hazel本身是可以直接使用ImGui的函数的(不需要将ImGui的函数定义导出Hazel才能使用)。
-
解决方法1
使用一个.def模块定义文件,其中列出了我们要从ImGui导出的所有函数
但缺点是很麻烦
-
解决方法2
ImGui的函数前置都有一个宏定义,但是为空
Hazel项目重定义这个空宏定义为dll导出,与sandbox项目重定义这个宏定义为dll导入
-
Hazel
IMGUI_API=__declspec(dllexport);
-
sandbox
IMGUI_API=__declspec(dllimport);
注意=周围不能有空格IMGUI_API = __declspec(dllimport);(错误写法)
(经测试:Hazel项目不重定义这个宏为导出似乎也没关系,只需sandbox导入,测试错了吧)
-
-
效果
讨论:Hazel项目改不改为静态lib
-
dll
- 优点
- 热更新,更改引擎代码后只需重新编译dll,让多个测试项目不用重新编译能使用最新引擎代码
- 让客户端的链接更容易
- 缺点
- dll很多警告
- exe动态链接dll启动速度慢
- 优点
-
lib
所有链接都构建到exe文件中
需要考虑dll的优点在使用引擎的角度,引擎代码已经完成了就不需要热更新了,dll的热更新优点没有了