gpt4 book ai didi

c++ - 矩阵乘法哪个更好? GLM 的重载 * 运算符或直接使用着色器

转载 作者:行者123 更新时间:2023-11-28 02:02:21 26 4
gpt4 key购买 nike

在 GLM 中,我们有一个重载的'*' 运算符用于矩阵相乘。

我们可以在 GLM 中使用这个运算符来进行矩阵乘法:

glm::mat4 MVP = Projection * View * Model;
//after that pass MVP to uniform 'MVP'

但换句话说,我们可以将 Projection、View 和 Model 传递给三个不同的 uniform,并在着色器程序中进行乘法运算。

GLM 在 CPU 上运行,而着色器程序在 GPU 上运行。由于 GPU 的架构,我们可以在着色器程序中比 CPU 更快地进行矩阵运算。

但我不能确定。哪种方式更快?

最佳答案

理想情况下,如果您出于其他目的在着色器中需要单独传递它们,则最好单独传递它们。如果您只需要 MVP,最好将 MVP 作为单个矩阵乘以并传递给着色器。

什么是最好的,很大程度上取决于您渲染的顶点数量,以及您的渲染是具有多个具有少量顶点的绘制调用还是具有许多顶点的少量绘制调用。

Always 在 CPU 上乘法会更好,因为它是每个绘制调用一次,而不是每个顶点一次。如果值需要在着色器之间变化,则必须在着色器中执行乘法。

我想我回答得太快了,但这可能与问题 Should I calculate matrices on the GPU or on the CPU? 非常相似

关于c++ - 矩阵乘法哪个更好? GLM 的重载 * 运算符或直接使用着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com