opengl shader坐标系统

时间:2018-10-11 10:13:20

标签: c++ opengl math optimization shader

我在第https://learnopengl.com/Getting-started/Coordinate-Systems页上学习了OpenGL 例如,他们使用3个矩阵(模型,视图,投影)并将其全部推送到着色器程序。但是可以计算MVPmat = Projection * View * CPU上的模型并将其推入着色器一次。

  1. 使用3个矩阵:

    • +使用GPU。
    • +清洁。
    • -需要所有像素的MVPmat计算器。
    • -使用16或32位计算器。
  2. 使用MVPmat =投影*视图* CPU上的模型。

    • +每种型号一次。
    • +使用64位计算器。
    • -使用CPU。
    • -不干净。

什么是最好的方法?我在GG上找不到答案,或者可能是我很愚蠢。

P / S对不起,我的英语。 谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定您所说的“干净”与“不干净”是什么意思。我也不确定为什么您确切地认为在CPU上计算Model-View-Projection矩阵意味着必须使用64位精度来完成。在与图形相关的事情上,几乎不需要64位浮点运算。实际上,一般而言,几乎不需要单精度浮点。除非,例如,除非您在确实需要该精度的地方进行一些科学计算,否则……

要回答您的问题:如果使用组合的模型-视图-投影矩阵足以满足您的需求,那么使用组合的矩阵似乎是最好的解决方案。您只需要计算一次组合矩阵。您只需将单个矩阵上传到GPU,而不是三个。您只需在着色器中获取一个矩阵即可,而不是三个。您只需在着色器中执行一个矩阵向量乘法,而不是三个…