如何在opengl中绘制视锥体

时间:2014-06-06 15:14:16

标签: opengl 3d projection

我想使用GL_LINE_STRIP画一个截头锥体。这些截头体顶点的坐标是什么?我有模型视图和投影矩阵。是否可以使用这些矩阵计算着色器本身的坐标?

1 个答案:

答案 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上的反转矩阵要快得多。