我想在移动设备上实现一个GLSL着色器分析工具包,我对此一无所知。 GLSL着色器分析工具包的想法是在不同的移动设备上运行该程序,然后给艺术家一个简单的印象,哪个操作是最昂贵的:FShader,VShader,Rasterisation或Band-width。但我不知道如何测量VShader(VShader部分的想法是测量移动设备可以支持的最大顶点数,给定着色器)。
简而言之,我正在寻找有关移动设备上Opengl基准测试的帮助。
PS,我已经通过绘制带有给定着色器的许多屏幕四边形来实现对FShader的分析,减去了使用void FShader绘制许多屏幕四边形的性能。在测试期间,深度写入和深度测试关闭。我只想了解成本的一般概念,不想涉及编译器和硬件事物。
最好的
答案 0 :(得分:1)
我知道以这种天真的方式测量着色器可能没什么意义
没有。完全有可能在软件中对静态模型进行调节,因此如果驱动程序可以确定整个绘制操作是多余的,那么一些供应商完全不在屏幕外几何体可能无法进入GPU。
基准测试应始终衡量实际应用程序的实际用途,否则您不知道实际测量的内容是否代表现实。
真实应用程序不会将所有几何体渲染到平截头体之外,因此您很可能会遇到优化的快速路径,该路径将跳过至少一些几何相关的管道(例如,仅计算位置,而不是其余的顶点着色器,或早期丢弃整个绘制调用)。
同样适用于渲染大量图层的基准测试 - 对于移动GPU(大多数是基于图块的,在某种程度上),在您开始看到至少某些性能下降之前,往往会对并发图层数量有一些限制。 (因为真正的应用程序不会渲染很多层,所以为什么浪费硬件支持它)。如果你想要一个较慢的工作负载,那么要么渲染到一个大的离屏渲染目标,要么渲染到多个较小的(但不是太小的)。