你在寻找广告牌的实现吗? (让2D精灵始终面对相机)如果是这样,你需要做的就是:
"vec3 billboard(vec2 v, mat4 view){", " vec3 up = vec3(view[0][1], view[1][1], view[2][1]);", " vec3 right = vec3(view[0][0], view[1][0], view[2][0]);", " vec3 p = right * v.x + up * v.y;", " return p;", "}"
v 是距离中心的偏移量,基本上是面向z轴的平面中的4个顶点。例如。 (1.0, 1.0), (1.0, -1.0), (-1.0, 1.0), and (-1.0, -1.0).
v
(1.0, 1.0), (1.0, -1.0), (-1.0, 1.0), and (-1.0, -1.0).
像这样使用它:
"vec3 worldPos = billboard(a_offset, u_view);" // then do whatever else.