我想使用GL_LINE_STRIP
画一个截头锥体。这些截头体顶点的坐标是什么?我有模型视图和投影矩阵。是否可以使用这些矩阵计算着色器本身的坐标?
答案 0 :(得分:4)
如果你想要平截头体角的世界空间坐标,你需要做的就是从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上的反转矩阵要快得多。