12. CPU → GPU数据上传 + 渲染指令执行流程

1.CPU → GPU数据上传 + 渲染指令执行流程

2.绑定GPU显存中的VBO/IBO说明


1.CPU → GPU数据上传 + 渲染指令执行流程

以渲染一个3D对象为例,全流程如下1).CPU准备阶段 a.CPU在内存中整理好顶点数据、索引数据、常量缓冲区参数(比如 MVP 矩阵)b.CPU确定本次渲染的渲染状态(深度测试、混合模式等)、Shader 引用、纹理引用
2).CPU写入命令缓冲区 CPU按顺序往"命令缓冲区"(CPU/GPU共享的内存块)写入一系列指令,包括 a.指令1:设置渲染状态(比如开启深度测试、绑定Shader程序)b.指令2:数据上传指令(若数据未上传过)—— 包含"CPU 内存源地址、GPU 显存目标地址、数据长度"c.指令3:绑定GPU显存中的VBO/IBO(顶点/索引缓冲区)d.指令4:更新常量缓冲区(把MVP矩阵、材质参数上传到GPU)e.指令5:DrawCall指令(告诉GPU用当前绑定的VBO/IBO渲染多少个三角形)
3).CPU提交命令缓冲区 CPU把写满指令的命令缓冲区提交给GPU的命令处理器(CommandProcessor),提交后CPU立即返回,去处理游戏逻辑、UI等其 他任务
4).GPU处理命令缓冲区 a.GPU命令处理器按顺序读取命令缓冲区中的指令 b.读到"数据上传指令",GPU命令处理器向DMA控制器(硬件)发送"数据搬运请求",包含源地址、目标地址、长度 c.DMA控制器直接访问CPU内存和GPU显存,完成数据拷贝(全程不占用CPU,也不占用GPU核心)d.DMA拷贝完成后,向GPU命令处理器发送「数据搬运完成信号」(不是给CPU发)e.GPU命令处理器收到信号后,继续执行后续指令(设置渲染状态、绑定资源、执行 DrawCall)f.GPU核心按指令完成渲染,输出画面到帧缓冲区
5).CPU同步 只有当CPU需要读取GPU渲染结果(比如屏幕截图、计算着色器输出),才会主动调用"同步指令"(比如glFinish())—— 此时 CPU会等待GPU完成所有未执行的指令,否则CPU全程不等待GPU

2.绑定GPU显存中的VBO/IBO说明

绑定GPU显存中的VBO/IBO理解成:CPU告诉GPU接下来的渲染指令,要使用显存里的哪一块顶点/索引数据,本质是建立渲染指 令和GPU显存资源的关联关系
a.数据上传阶段(已完成)CPU把顶点/索引数据通过DMA上传到GPU显存,GPU会创建对应的VBO/IBO,并返回一个ID给CPU,CPU把这个ID存在自己的资源 台账里 b.绑定阶段,CPU往命令缓冲区写入一条"绑定指令",指令内容很简单-绑定VBOID=123"顶点数据槽位"-绑定IBOID=456"索引数据槽位"c.指令提交阶段 CPU把包含"绑定指令 + DrawCall 指令"的命令缓冲区提交给GPU d.GPU执行阶段-GPU命令处理器先执行"绑定指令":根据ID找到显存里的VBO/IBO,把它们和对应的槽位关联-接着执行DrawCall指令:GPU从槽位中读取绑定好的顶点/索引数据,再结合Shader、渲染状态完成渲染

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1165484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中反射机制的应用场景,零基础入门到精通,收藏这篇就够了

1. 动态代理 动态代理是Java反射机制的一个重要应用场景。通过动态代理,可以在运行时创建代理类并处理方法调用。动态代理在Java中的主要应用场景是AOP(面向切面编程),如事务管理、日志记录、权限控制等。 示例: im…

django基于python的秦宇宙智慧游乐场游乐园门票售票系统网站的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着信息技术的快速发展,智慧化管理系统在游乐园行业的应用日益广泛。本文设计并实现了一个基于Python和D…

Java 开发转前端:利用 AI 竟然如此简单_java 对象生成前端文档,零基础入门到精通,收藏这篇就够了

🔥关注墨瑾轩,带你探索编程的奥秘!🚀 🔥超萌技术攻略,轻松晋级编程高手🚀 🔥技术宝库已备好,就等你来挖掘🚀 🔥订阅墨瑾轩,智趣学习不…

[原创]基于ELM多输出回归+SHAP可解释性分析+NSGAII多目标优化算法的工艺参数优化 Matlab代码

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 (ELMSHAP)基于ELM极限学习机的数据多输入多输出SHAP可解释性分析的回归预测模型 SHAP部分: 1、在机器学习和深度学习领域,模型复杂度的不断攀升使得决策过程的可解释性成为研究热点…

django基于python的社区老年人关爱服务系统的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着人口老龄化加剧,社区老年人关爱服务需求日益增长。传统服务模式存在效率低、资源分配不均等问题&…

基于Springboot+Vue的大学生军训系统设计与实现

前言 🌞博主介绍:✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发、文档编写、答疑辅导等。✌…

django基于python的美食探店分享网站设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着移动互联网的普及,美食探店分享平台逐渐成为用户获取餐饮信息的重要渠道。基于Python的Django框架设计…

[原创]基于CCO-ELM多输出回归+SHAP可解释性分析+NSGAII多目标优化算法的工艺参数优化 Matlab代码

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 (CCO-ELM+SHAP)基于杜鹃鲶鱼算法优化极限学习机的数据多输入多输出+SHAP可解释性分析的回归预测模型 SHAP部分: 1、在机器学习和深度学习领域,模型复杂度的不断攀升使得决策过程的可解释性成为研究热点。…

[原创基于CCO-LSSVM多输出回归+SHAP可解释性分析+NSGAII多目标优化算法的工艺参数优化 Matlab代码

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 (CCO-LSSVM+SHAP)基于杜鹃鲶鱼算法优化最小二乘向量机的数据多输入多输出+SHAP可解释性分析的回归预测模型 SHAP部分: 1、在机器学习和深度学习领域,模型复杂度的不断攀升使得决策过程的可解释性成为研究…

django基于python的酒店预定管理系统 客房清洁

目录 Django酒店预订管理系统中的客房清洁模块设计 关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! Django酒店预订管理系统中的客房清洁模块设计 Django框架构建的酒店预订管理系…

tinylisp:只有99行c代码的lisp语言

源码:Robert-van-Engelen/tinylisp: Lisp in 99 lines of C and how to write one yourself. Includes 21 Lisp primitives, garbage collection and REPL. Includes tail-call optimized versions for speed and reduced memory use. 用99行C代码实现Lisp及自制教…

Java 常用编辑器 IntelliJ IDEA,零基础入门到精通,收藏这篇就够了

文章目录 IDEA 概述IDEA 下载和安装IDEA 中的第一个代码IDEA 的项目和模块操作 (一)类的操作(二)模块的操作(三)项目的操作 IDEA 概述 IntelliJ IDEA是一款由JetBrains开发的集成开发环境(IDE…

PaddleOCR免费调用API额度提高到3000页每天啦

PaddleOCR,github 60K star,OCR效果非常好,目前是最好的OCR软件。 官网:PaddleOCR - 文档解析与智能文字识别 | 支持API调用与MCP服务 - 飞桨星河社区 除了在官网直接提交文档进行文字识别,还可以使用api调用官方的a…

线程池简单源码思路手撕实现和关于参数设置

线程池简单源码思路手撕实现 import java.util.ArrayList; import java.util.List; import java.util.concurrent.BlockingQueue; import java.util.concurrent.TimeUnit;public class myThreadPool {private int corePoolSize;private int maxPoolSize;private int timeout;pr…

VBScript系统级自动化:使用WScript对象外部操控Office与模拟键盘输入

目录 第七章:WScript控制Office 7-1 WScript常用属性(实例:交互性更好的自动拆分工作簿) 7-2 WScript对象的常用方法 7-3 用WshShell对象控制程序(另一种控制Word、Excel的方法) 7-4 用WshShell做机器…

NPP 草原:南非图文巴,1949-1990 年,R1

NPP Grassland: Towoomba, South Africa, 1949-1990, R1 简介 本数据集包含七个文本格式 (.txt) 的数据文件。这些文件提供了在南非图文巴人工建立的草原稀树草原研究地点进行的生物量估算、土壤碳 (C)、氮 (N) 和磷 (P) 测量数据。该研究地点是长期施肥试验的一部分&#xf…

NPP 草原:南非图文巴,1949-1990 年,R1

NPP Grassland: Towoomba, South Africa, 1949-1990, R1 简介 本数据集包含七个文本格式 (.txt) 的数据文件。这些文件提供了在南非图文巴人工建立的草原稀树草原研究地点进行的生物量估算、土壤碳 (C)、氮 (N) 和磷 (P) 测量数据。该研究地点是长期施肥试验的一部分&#xf…

GEE初学:谷歌地球引擎GEE入门指南(最新注册全流程)

引言 谷歌地球引擎(Google Earth Engine, GEE)是一个用于全球尺度地理空间数据分析的强大平台。该平台提供数十年卫星影像和环境数据集的免费访问权限,推动遥感分析的普及化,并支持海量数据的云端处理。 本教程将带您完成从账号创建到首个资源(asset)可视化的完整流程,…

AI应用架构师打造的AI驱动虚拟旅游,树立行业标杆

从0到1构建AI驱动的虚拟旅游应用:AI应用架构师的实战指南 摘要/引言 问题陈述 随着人们对旅游体验多样化需求的增长,传统的实体旅游受到时间、空间以及各种现实因素的限制。如何突破这些限制,为用户提供沉浸式、个性化且不受地理和时间约束的旅游体验,成为旅游行业亟待解…

现代高级语言 JIT 编译优化技术——逃逸分析(Escape Analysis)

现代高级语言 JIT 编译优化技术——逃逸分析(Escape Analysis)逃逸分析的定义 逃逸分析(Escape Analysis) 是一种在编译期间(对于Java等语言是在即时编译阶段)进行的静态分析技术。它的核心目的是分析一个对…