opengl – 估算GLSL着色器中所需的寄存器数

最近我得到了一些

error C6020: Constant register limit exceeded at variable; more than 1024 registers needed to compile program

编译GLSL顶点着色器时出错,可能是因为统一变量的数量,我试图找出一种根据我定义的制服估算/计算着色器所需寄存器数量的方法.那有什么指导或规则吗?

例如,我是否正确假设大小为vec4的变量需要1个寄存器而mat4需要4个寄存器?
有没有为此目的的规则?

最佳答案 图形硬件对于任何此类估计来说都太多样了.甚至你看似简单的假设:

variables up to vec4 in size require 1 register and mat4 require 4 registers?

这在许多现代硬件上都不正确.它曾经是,但那是几年前.特别是如果你在谈论个别统一变量;编译器可以用它们玩各种游戏.

甚至没有一种远程准确的方法来估计一段GLSL代码消耗的此类资源的数量.您可以计算代码使用的统一组件的数量,但这是因为OpenGL告诉您如何执行此操作.除此之外,你无能为力.

点赞