24.5使用ImGui实现引擎编辑器


24.5 使用ImGui实现引擎编辑器 引擎编辑器最基础的功能,就是要将游戏画面渲染到编辑器的窗口里,例如Unity就是渲染到Game和Scene窗口。 这个功能有多种方式可以选择。 技术选型 为了将游戏画面渲染到ImGui的窗口,我尝试过两种方式: 编辑器和游戏是独立的Context,在游戏里采集每一帧画面,存储到RingBuffer,然后在编辑器里读取出来显示。 编辑器共享游戏Context,这样在游戏里渲染到FBO后,编辑器里可以实时获取并显示。 方式1的优点是独立。隔离,逻辑清晰简单,缺点是需要从GPU保存画面到文件,然后又上传到GPU显示,开销极大。 方式2的优点是Context共享,编辑器可以直接获取游戏渲染画面的FBO Attached Texture,无需下载再上传,没什么开...

24.5 使用ImGui实现引擎编辑器 引擎编辑器最基础的功能,就是要将游戏画面渲染到编辑器的窗口里,例如Unity就是渲染到Game和Scene窗口。 这个功能有多种方式可以选择。 技术选型 为了将游戏画面渲染到ImGui的窗口,我尝试过两种方式: 编辑器和游戏是独立的Context,在游戏里采集每一帧画面,存储到RingBuffer,然后在编辑器里读取出来显示。 编辑器共享游戏Context,这样在游戏里渲染到FBO后,编辑器里可以实时获取并显示。 方式1的优点是独立。隔离,逻辑清晰简单,缺点是需要从GPU保存画面到文件,然后又上传到GPU显示,开销极大。 方式2的优点是Context共享,编辑器可以直接获取游戏渲染画面的FBO Attached Texture,无需下载再上传,没什么开销。 毫无疑问,方式2是游戏编辑器普遍采用的方式。 而方式1虽然在引擎编辑器被抛弃,但是在制作性能分析器时,可以作为实时录屏的技术选型,以后再介绍吧。 共享Context OpenGL的Context是可以共享的,就如同上面说的,游戏Context里的FBO Attached Texture,在Ed...

发布者: 作者: 转发
评论区 (0)
U