我想知道是否可以通过对 glutSolidCube(GLDouble size)
应用某种变换来构建 3D 方形平截头体。我猜测涉及某种剪切矩阵,据我所知,这不是内置转换。
请注意,我根本不关心视锥体(正如您可能想象的那样,这会使任何 Google 搜索出现偏差)。我只想将 3D 正方形视锥体作为场景的一部分。任何关于如何从立方体中产生一个的想法将不胜感激!
最佳答案
不是剪切矩阵,是透视投影的投影矩阵。将单位立方体的顶点坐标乘以逆投影矩阵,得到平截头体顶点的坐标。要获得世界空间中的平截头体坐标,您还需要通过逆相机矩阵( View 矩阵)对顶点进行倍增。
在这里查看详细的公式:http://www.songho.ca/opengl/gl_projectionmatrix.html
要使立方体变形,最好创建具有所需顶点的 VBO,或者只渲染一些变形的四边形,如果你想使用固定功能管道进行一些快速的'n'dirty 实现。
附言
有一个代码摘录可以计算截锥体的角:http://www.gamedev.net/topic/606716-frustum-corners-from-view-projection/
关于c++ - 通过对立方体应用变换来创建 3D 方形平截头体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762809/