use*_*108 2 opengl glsl glsles
如果这是一个愚蠢的问题,我很抱歉,但我很长一段时间都在想为什么那里有很多例子顶点着色器,包含一个模型视图矩阵.在我的程序中,我有以下情况:
如果我在顶点着色器中使用模型视图矩阵,我必须在CPU上执行矩阵乘法并上传单个矩阵.另一种方法是上传模型和视图矩阵并在GPU上进行乘法运算.关键是,视图矩阵不一定与模型矩阵同时发生变化,但如果使用模型视图矩阵,则只要其中任何一个发生变化,就必须执行CPU乘法和上传.那么为什么不使用单独的视图和模型矩阵来实现快速GPU乘法,并且可能大致相同数量的GPU矩阵上传?
因为在顶点着色器中使矩阵相乘会使GPU对进入它的每个顶点进行完全计算(请注意,最近的GLSL编译器会检测到产品在所有顶点上是均匀的,并且可能会将计算从GPU移到CPU).
此外,当执行单个 4×4矩阵计算时,CPU实际上优于GPU,因为没有数据传输和命令队列开销.
GPU计算的一般规则是:如果它在所有顶点上均匀,并且您可以在CPU上轻松预先计算它,则在CPU上执行.