给定surfaceNormal(gl_NormalMatrix * gl_Normal)和gl_Vertex,我如何旋转gl_Vertex以使其适应该法线。我想将其用于广告牌和一般轮换。
2 个问题:
- 如何使用 surfaceNormal 旋转 gl_Vertex(在 .vert 着色器中)?
- 旋转应该在 GPU 上(在着色器中)还是在 CPU 上完成? (请根据此问题调整问题#1,给定2个Vector3fs,一个用于旋转(正常),另一个用于顶点位置(如果应该在CPU上完成)
谢谢!
最佳答案
在大多数情况下,旋转应该在 CPU 上通过模型矩阵(或直接世界矩阵)的方式完成。
即使 CPU 比 GPU 慢,请记住,将为每个顶点执行顶点着色器,而链接到网格的模型矩阵(因此很多顶点)每帧仅计算一次,如果您的网格是动态的,如果您的网格不移动,则整个程序仅运行一次。
关于java - OpenGL 着色器 - 使用法线旋转顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433384/