| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 游戏引擎Flax Engine分析(七)渲染 -> 正文阅读 |
|
[游戏开发]游戏引擎Flax Engine分析(七)渲染 |
2021SC@SDUSC 一、简述? ? ? ? 上一篇博客将开始渲染的整个流程介绍完毕,这篇博客将对后续渲染服务进行进一步的分析(注:仍然仅关注于2D渲染部分) 二、分析? ? ? ? 我们接下来分析的部分是结束渲染的操作,也就是Render2D中的End操作:
????????RENDER2D_CHECK_RENDERING_STATE为预定义的宏,目的是查询2D渲染状态并输出日志信息,通过调用Render2D中的isRendering()判断渲染状态,若为false(即未处于渲染中),打印日志信息"Calling Render2D is only valid during rendering."。 ? ? ? ? ASSERT在之前已经分析过:执行表达式的硬断言,?使引擎崩溃并在表达式失败时插入调试器中断。 ? ? ? ? 然后判断绘制调用是否为空,如果没有可绘制的则跳过,函数返回。
? ? ? ? 准备着色器shader?,着色器未加载且无法加载该资产(失败或已取消)时,清清除绘制调用,返回。若着色器可加载,则为shader分配着色器资源。
? ? ? ? 我们回到结束渲染: ? ? ? ? 接下来刷新几何缓冲区:
????????设置输出:
????????准备恒定缓冲:
????????准备 PSO (管线状态对象)。 ????????刷新绘制调用。弹出绘制调用,检查是否无法将元素添加到批处理中,若不能,刷新批处理元素,将元素添加到批处理。 ? ? ? ? 刷新全部批处理元素至结束。
? ? ? ? 最后清楚绘图调用、GPU上下文设置为空、GPU纹理视图(输出)设置为空。
? ? ? ? ?这篇博客就分析到这里,主要介绍了结束渲染时所做的处理,下一篇博客将继续分析后续2D渲染服务。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 0:33:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |