[WebGL] 实例化绘制性能测试

实例化绘制( Instanced Drawing )是 OpenGL / WebGL 等图形 API 中常用的性能优化技术,它适用于同样的模型绘制次数非常多的场景,能够有效的降低显存占用和图形 API 接口调用的次数,达到性能提升的效果。以前我只知道怎么去实现、什么情况下适合用实例化绘制,但是性能好多少,影响性能的因素主要有哪些,并不是特别的清晰。最近我就这个话题做了几组测试,来加深自己对实例化绘制的理解。

使用实例化技术绘制大量模型

测试1:实例化绘制和非实例化绘制性能的对比

一个简单的立方体模型绘制10万次,实例化绘制非常流畅,几乎没有掉帧;非实例化绘制直接卡死

绘制方式缩略图场景中模型个数帧率
实例化绘制10万60帧
非实例化绘制1帧

测试1 - 实例化和非实例化性能对比

测试2:简单模型和复杂模型实例化绘制性能对比

复杂模型的三角网和纹理数据都比简单模型更复杂,绘制相同次数,帧率也低得多

模型缩略图实例化个数三角面片个数纹理帧率
10万12无纹理60帧(满帧)
2856一张 2048 * 2048 的png外挂纹理7帧(卡成PPT)

测试2 - 实例化渲染性能受模型复杂程度影响

上述实验可以看出模型复杂程度对实例化渲染的性能影响是很大的,那么网格的复杂程度和纹理的复杂程度哪一个占主导地位呢?我接着做了如下两组测试。

测试3:三角网复杂程度对实例化性能的影响测试

保持纹理不变,将原始模型三角网按照不同程度简化,得到以下测试结果,可以看到三角网简化的程度越大,性能就越高,而且提升还挺明显。

缩略图实例化个数三角网简化率帧率
4万原始数据8帧
顶点个数简化为原始的 70%38帧
顶点个数简化为原始的 50%50帧
顶点个数简化为原始的 30%55帧

测试3 - 三角网复杂程度对实例化绘制性能的影响

 测试4:纹理尺寸对实例化绘制的影响测试

保持三角网不变,将原始模型的纹理尺寸按比例缩小,从测试结果看到纹理尺寸对实例化的性能并没有影响。

缩略图实例化个数纹理尺寸帧率
4万原始数据 (1024 × 1024)8帧
512 × 5128帧
256 × 2568帧
128 × 1288帧
64 × 648帧

测试4 - 纹理尺寸对实例化绘制性能的影响

综上可知,在绘制数量非常多的相同模型时,实例化绘制在性能方面的优势非常明显;此外模型三角网的复杂程度对实例化绘制性能的影响起着决定性的作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯 java 承压计算

题目: 思路: 1:其中的数字代表金属块的重量(计量单位较大) 说明每个数字后面不一定有多少个0 2:假设每块原料的重量都十分精确地平均落在下方的两个金属块上,最后,所有的金属块的重量都严格精确地平分落在最底层的电子…

QT 二维坐标系显示坐标点及点与点的连线-通过定时器自动添加随机数据点

QT 二维坐标系显示坐标点及点与点的连线-通过定时器自动添加随机数据点 功能介绍头文件C文件运行过程 功能介绍 上面的代码实现了一个简单的 Qt 应用程序,其功能包括: 创建一个 MainWindow 类,继承自 QMainWindow,作为应用程序的…

物联网学习1、什么是 MQTT?

MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通…

FLASH的读取与写入

FLASH的写入 结合HAL库所给参数: 查阅具体使用芯片的参考手册。 就不在详细解释,英文自行翻译。具体代码如下: /*FLASH写入程序*/ void WriteFlashTest(uint32_t L, uint32_t addr, uint32_t *Data,int Page) {int i0;/* 1/4解锁FLASH*/HAL…

揭秘五力模型:轻松掌控企业竞争命脉,决策不再迷茫!

五力分析模型又成为波特五力模型是由著名的管理学者迈克尔波特(Michael Porter)在20世纪80年代初提出的一种理论框架,它对企业营销中的战略制定产生了全球性的深远影响。这一模型被广泛应用于企业竞争战略的分析,可以帮助企业有效地分析企业在营销环境中…

python-pytorch获取FashionMNIST实际图片标签数据集

在查看pytorch官方文档的时候,在这里链接中https://pytorch.org/tutorials/beginner/basics/data_tutorial.html的Creating a Custom Dataset for your files章节,有提到要自定义数据集,需要用到实际的图片和标签。 在网上找了半天没找到&a…

蓝海项目!黑科技引爆全网流量小红书拉新,单日暴力收益7000+,小白也能轻松上手【揭秘】

众所周知,自去年以来,图文作品在各大平台如快手和抖音的流量大增,这得益于这些平台与小红书的竞争。目前,小红书也在积极推广,成功推荐新用户下载应用的奖励高达15元,这一数字几乎是其他平台的几倍。此外&a…

【TypeScript】解决字面量类型推断错误的四种方式

解决字面量类型推断错误的四种方式 方式一:对象属性使用类型断言方式二:传参使用类型断言方式三:对象使用类型断言方式四:对象属性使用变量,变量使用字面量类型参考 declare function handleRequest(url: string, meth…

深入理解HDFS工作原理:大数据存储和容错性机制解析

** 引言: ** 在当今数据爆炸的时代,存储和管理大规模数据成为了许多组织面临的重要挑战。为了解决这一挑战,分布式文件系统应运而生。Hadoop分布式文件系统(HDFS)作为Apache Hadoop生态系统的核心组件之一&#xff…

Java | Leetcode Java题解之第2题两数相加

题目: 题解: class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode head null, tail null;int carry 0;while (l1 ! null || l2 ! null) {int n1 l1 ! null ? l1.val : 0;int n2 l2 ! null ? l2.val : 0;int sum…

罗永浩直播阿里云服务器ECS u1性能如何?值得买吗?

罗永浩直播卖阿里云服务器,企业专享云服务器ECS通用算力型u1实例是什么?性能如何?目前阿里云服务器ECS u1实例,2核4G,5M固定带宽,80G ESSD Entry盘,优惠价格199元一年,罗永浩今晚直播…

算法学习16:数论03(容斥原理、博弈论)

算法学习16:数论03(容斥原理、博弈论) 文章目录 算法学习16:数论03(容斥原理、博弈论)前言一、容斥原理:求多个集合的并集二、博弈论1.Nim游戏:2.集合N-im游戏 总结 前言 提示&#…

【AI系列】Python NLTK 库和停用词处理的应用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

04 | Swoole 源码分析之 epoll 多路复用模块

首发原文链接:Swoole 源码分析之 epoll 多路复用模块 大家好,我是码农先森。 引言 在传统的IO模型中,每个IO操作都需要创建一个单独的线程或进程来处理,这样的操作会导致系统资源的大量消耗和管理开销。 而IO多路复用技术通过…

INA350ABSIDDFR 仪表放大器 单路低功耗 TSOT-23-8

NA350ABSIDDFR 是一款高精度、低功耗、单片式精密运算放大器。它具有出色的直流精度和低失调电压,适用于需要高精度信号处理的应用。这款产品广泛应用于各种领域,如工业控制、医疗设备、测试与测量设备以及通信系统等。 制造商: Texas Instruments …

Apollo配置中心使用

apollo配置中心使用 Apollo配置中心-简介apollo源码Apollo配置基本概念Apollo特性Apollo基础模型Apollo架构设计Apollo架构设计-实时推送设计Apollo架构设计-可用性Apollo架构设计-监控Apollo架构设计-扩展Apollo-本地部署准备工作安装步骤mysql命令行创建ApolloPortalDBmysql客…

实时的软件生成 —— Prompt 编程打通低代码的最后一公里?

原文:实时的软件生成 —— Prompt 编程打通低代码的最后一公里?_运行_问题_示例 PS:这也是一篇畅想,虽然经过了一番试验,依旧有一些不足,但是大体上站得住脚。 传统的软件生成方式需要程序员编写大量的代…

矩阵间关系的建立

参考文献 2-D Compressive Sensing-Based Visually Secure Multilevel Image Encryption Scheme 加密整体流程如下: 我们关注左上角这一部分: 如何在两个图像之间构建关系,当然是借助第3个矩阵。 A. Establish Relationships Between Different Images 简单说明如下: …

Redis类型 Stream Bitfield

Stream 类型 Stream类型就是Redis里的mq,是redis为了占领市场份额的产物 今天我们就来介绍一下Stream Redis的消息队列一般是两个方案 第一个是Lpush Rpop 队列的异步队列方案(一对一) 第二个方案就是pubsub(发布订阅)模式 (一对多) 注:这里如果没有消费者了,队列中的数据就直…

android RK3328 gpio处理,android高级面试2024

public static class CommandResult { public int result -1; public String errorMsg; public String successMsg; } /** 执行命令—单条 param command param isRoot return */ public static CommandResult execCommand(String command, boolean isRoot) { Str…