我想使用GL_LINE_STRIP
绘制一个平截头体。这些平截头体顶点的坐标是什么?我有模型 View 和投影矩阵。是否可以使用这些矩阵在着色器本身中计算坐标?
最佳答案
如果您想要截头角的世界空间坐标,则需要做的就是将NDC空间中的8个角点投影(每个维度从-1到1,所以角点很容易枚举)回到世界空间。但不要忘记,您必须除以w
:
c_world = inverse(projection * view) * vec4(c_ncd, 1);
c_world = c_world*1.0/c_world.w;
当我使用GLSL语法编写此代码时,这仅是伪代码。您可以在着色器中执行此操作,但这意味着必须多次计算(取决于您将着色器置于哪个着色器阶段)。通常,至少要在CPU上预先计算该逆矩阵要快得多。