OpenGL 着色器 - 使用它的法线旋转顶点

OpenGL Shaders - Rotate a vertex using it's normal

给定 surfaceNormal (gl_NormalMatrix * gl_Normal)gl_Vertex 如何旋转 gl_Vertex 使其适应正常。我想将其用于广告牌和一般轮换。

2 个问题:

  1. 如何使用 surfaceNormal (在 .vert 着色器中) 旋转 gl_Vertex?
  2. 旋转应该在 GPU 上(在着色器中)还是在 CPU 上完成? (请根据这个问题调整问题#1给定2个Vector3fs,一个用于旋转(正常)另一个用于顶点位置如果它应该在CPU)

谢谢!

在大多数情况下,应该通过模型矩阵(或直接世界矩阵)在CPU上进行旋转。

即使 CPU 比 GPU 慢,请记住顶点着色器将为每个顶点执行,而模型矩阵链接到网格,所以很多顶点,应该是如果您的网格是动态的,则每帧仅计算一次;如果您的网格不会移动,则整个程序仅计算一次。