给定一个点云,其x,y,z坐标在某个任意范围内(即x:[-40,40],y:[-1,1],z:[-100:100](,变换坐标以使其位于OpenGL的剪裁体积范围内(x:[-1.11],y:[-1,1],z:[-1,1]](,从而可以显示的最有效方法是什么?
由于您说的是"normalize for display",我认为您事先不知道确切的范围。
您需要扫描云以找到每个轴的最小/最大值,然后构建一个变换矩阵来重新定位云,使其"中间"位于0,0,0,并向下缩放,使云的最长轴适合剪裁体积。
你不需要变换cpu端的点,顶点着色器会使用一个矩阵来实现这一点,你将作为一个统一的矩阵来传递。